1. Spring框架简介及官方压缩包目录介绍
  2. 工厂模式
  3. Spring环境搭建
  4. IoC详解
  5. Spring创建Bean的三种方式(包含两种工厂方式)
  6. scope属性讲解
  7. DI详解
  8. Spring中几种注入方式
  9. Spring解析properties文件
  1. Spring框架简介及官方压缩包目录介绍

  1. 主要发明者:Rod Johnson

  2. 轮子理论推崇者:

    2.1 轮子理论:不用重复发明轮子.

    2.2 IT行业:直接使用写好的代码.

  3. Spring框架宗旨:不重新发明技术,让原有技术使用起来更加方便.

  4. Spring几大核心功能

    4.1 IoC/DI    控制反转/依赖注入

    4.2 AOP      面向切面编程

    4.3 声明式事务.

    4.4 采用模板方式对其他技术的支持

    4.5 spring的定时器

    5.注意spring中的不同的版本中。包的结构以及名称、数量都会有变化。

二.工厂模式

工厂模式时候实例化对象的一种设计模式。可以降低对象之间的耦合度。通过工厂对象来解耦。更符合程序设计开闭原则。

        1. 简单工厂

        2. 抽象工厂

        3. 通用工厂

三.Spring环境搭建

1.导入jar包

基本jar包

2.创建spring的配置文件

2.1spring的配置文件可以叫任意的名称。默认的习惯于applicationContext.xml

2.2spring的配置文件可以在项目的任意位置。一般默认的我们会放到src的根下。

2.2.1如果没有添加约束文件。需要自己手动或者联网状态下载spring的约束文件

3.在spring的配置文件中通过<bean>标签来告知spring管理哪个对象的生命周期

3.1<bean> id:表示唯一的一个标记。不能重复

3.2<bean> class:把哪个类实例化。

4.启动spring框架

4.1启动时指定创建哪个IOC容器

4.1.1BeanFactry:基本的IOC容器。只是缓存对象。

4.1.2ApplicationContext:高级IOC容器。是beanFactory的子接口 扩展了BeanFactory的能力。添加了如 解析properties 国际化等处理

三.IoC详解

1.IOC(Inversion of contorl)控制反转

2.控制:实例化对象的过程

3.反转:原来实例化一个对象的过程他的控制权是掌握在我们程序员自己手中的。而现在整个对象创建过程完全交由spring来负责。

4.容器(container)并不是值的是web容器。他不能处理请求。该容器是指,spring缓存对象的集合(Map<String,Object>)。

 

四.Spring创建Bean的三种方式(包含两种工厂方式)

 

1.BeanFactory与ApplicationContext对象的区别

1.1创建对象的时间

BeanFactory是在调用getBean方法时,先去创建对象。

ApplicationContext是在启动spring框架时就讲所有的对象创建好。

1.2 能力上的区别

BeanFactory只是你一个基本的IOC容器。只能缓存对象没有额外的能力。而ApplicaitonContenxt可以操作properties,国际化等。。。

1.使用无参的构造方法

Spring的配置文件

<bean id="suibian" class="com.bjsxt.dao.SpringTest"></bean>

2.使用工厂模式来创建对象

<!-- 使用工厂模式来构建对象 -->

<!-- 1.配置能够产生对象的工厂 -->

<bean id="factory" class="com.bjsxt.commons.ObjectFactory"></bean>

<!-- 告知spring哪个工厂中调用的哪个方法 -->

<bean id="test" factory-bean="factory" factory-method="createSpringTest"></bean>

4.使用工厂中的静态方法来获取对象

<!-- 调用工厂中的静态方法获取对象 -->

<bean id="test" class="com.bjsxt.commons.ObjectFactory"  factory-method="createSpringTest"></bean>

五.scope属性讲解

Scope属性是spring配置文件中的<bean>标签的属性。他决定了采用什么方式来创建对象(单例,多例) scope的取值范围为:

Prototype:多例

Singleton:单例(默认值)

六.DI详解与Spring中几种注入方式

1.DI:dependence injection

2.使用构造方法完成值的注入

<constructor-arg index="" name="" type="" value=""></constructor-arg>

2.1.index: 表示构造方法中的参数的位置。注意从0开始

2.2.name:按照构造方法的参数的名称完成注入。

2.3.type:根据类型匹配位置

2.4.value:注入的值(value一般用于存放基本数据类型+String)

3.基于属性的注入方式

3.1 要求类中必须要含有一个无参的构造方法。

3.2 要求属性必须提供set方法。

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="msg" value="lisi"></property>

</bean>

4.注入其他类型

4.1 注入set类型

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<!-- <property name="msg" value="lisi"></property> -->

<property name="set">

<set>

<value>a</value>

<value>b</value>

<value>c</value>

</set>

</property>

</bean>

4.2 注入List类型

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="list">

<list>

<value>aa</value>

<value>bb</value>

<value>cc</value>

</list>

</property>

</bean>

4.3 注入一个Map

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="map">

<map>

<entry key="key1">

<value>aaa</value>

</entry>

<entry key="key2">

<value>bbb</value>

</entry>

</map>

</property>

</bean>

4.4 注入一个properties

<bean id="suibian" class="com.bjsxt.dao.SpringTest" scope="prototype">

<property name="prop">

<props>

<prop key="key1">

aaaa

</prop>

<prop key="key2">

bbbb

</prop>

</props>

</property>

</bean>

4.5 注入springIOC容器中的对象

要求注入的对象与被注入的对象都需要在ioc容器中存在。

<bean id="userDao" class="com.bjsxt.dao.UserDaoImpl"></bean>

<bean id="userServie" class="com.bjsxt.service.UserServiceImpl">

<property name="userDao">

<ref bean="userDao"/>

</property>

</bean>

七.Spring解析properties文件

1.通过在spring的配置文件中开启操作properties文件的工具类。

<!-- 配置解析properties工具类 -->

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="location">

<value>/config.properties</value>

</property>

</bean>

2.以后我们会使用命名空间来开启这个工具类

以后再讲。。。。。

01---Spring框架的更多相关文章

  1. 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

  2. 01 Spring框架 基本介绍

    相信学习java,并且走Web道路的道友都应该知道Spring的大名,它的地位相信也不需要我在这里多说什么,接下来的文章就Spring的配置和使用来进行一些讲解. 首先学习框架我们都要考虑和做到以下几 ...

  3. spring框架总结(01)

    1.spring是什么? sprint其实就是一个开源框架,是于2003年兴起的一个轻量级的java开发框架,是有Road Johnson创建的,简单的来说spring是一个分层的JavaSE/EE( ...

  4. Spring 框架基础(01):核心组件总结,基础环境搭建

    本文源码:GitHub·点这里 || GitEE·点这里 一.Spring框架 1.框架简介 Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 ...

  5. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

  6. 回顾Spring框架

    Spring框架: 传统JavaEE解决企业级应用问题时的"重量级"架构体系,使它的开发效率,开发难度和实际的性能都令人失望.Spring是以一个 救世主的身份降临在广大的程序员面 ...

  7. Spring框架简单介绍

    原文地址:  http://my.oschina.net/myriads/blog/37922 1.使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多 ...

  8. spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包

    下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...

  9. Spring学习之旅(二)极速创建Spring框架java Web工程项目

    编译工具:eclipse 1)创建Web工程:spring_web_helloworld 2)导入所需jar包: 3)创建实体类:同上篇博文 4)创建配置文件hellobean.xml.同上篇博文 不 ...

  10. Spring框架+Struts2框架第一次整合

    1:Spring框架和Struts2框架如何整合??? Spring 负责对象创建 Struts2 用Action处理请求 2:Spring与Struts2框架整合的关键点: 让struts2框架ac ...

随机推荐

  1. EF异常探究(An entity object cannot be referenced by multiple instances of IEntityChangeTracker.)

    今天在改造以前旧项目时出现了一项BUG,是由于以前不规范的EF写法所导致.异常信息如下: "An entity object cannot be referenced by multiple ...

  2. 数据库.MongoDB.Java样例

    1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...

  3. python中openpyxl的用法【安装,以及一些基本的操作】

    概述 Openpyxl是python中简单易用的操作excel电子表格的一个模块.接下来呢,跟博主一起学习一下吧  ----_<_>_---- 首先先清楚一些excel的基本概念: 在op ...

  4. JPA之常用 基本注解

    1.常用基本注解 @Entity @Table @Basic @Column @GeneratedValue @Id 2.特殊注解 @Transient @Temporal 用 table 来生成主键 ...

  5. 解决 iframe 在 ios 上不能滚动的问题

    HTML代码在使用IFRAME或者其他HTML元素时,你需要使用一个元素(如DIV)来包装他们: <div class="scroll-wrapper">  <i ...

  6. 使用 LitJson 解析Json并读取数据

    开发中经常要获取各种数据,而现今比较常见的数据便是Json数据格式,网上也有很多解析Json数据的方法,但是 作为小白的我,对于那些个高大上的方法理解不够,这不找了许久发了这些一个 LitJson 库 ...

  7. Oracle结合Mybatis实现取表中前10条数据

    之前一直使用mysql和informix数据库,查表中前10条数据十分简单: 最原始版本: select top * from student 当然,我们还可以写的复杂一点,比如外加一些查询条件? 比 ...

  8. 最近折腾老机器:还是 Xp 最好!

    闲来无事,折腾机器. -------------------------------------------------------------- 硬件: CPU:amd x2450 Memory:6 ...

  9. idea tomee required to support ear ejb deployment问题

    先删掉原来的uname,然后添加项目即可

  10. Problem B: 大整数的加法运算

    Problem B: 大整数的加法运算 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 112  Solved: 57[Submit][Status][W ...