一、Spring框架简介
1.主要发明者:Rod Johnson
2.轮子理论推崇者:
轮子理论:不用重复发明轮子
IT行业:直接使用写好的代码
3.Spring框架的宗旨:不重新发明技术,让原有技术使用起来更加方便
4.几大核心功能:
IOD/DI : 控制反转/依赖注入
AOP:面向切面编程
声明式事务
采用模板的方式对其他技术的支持
Spring的定时器
二、工厂模式
Spring采用工厂模式进行实现,有关该设计模式的知识点我这里不做详细赘述,读者可以自行百度。这里主要说一下:工厂模式是实例化对象的一种设计模式,可以降低对象之间的耦合度,通过工厂对象来解耦,更符合程序设计的开闭原则。
工厂模式有几种:
简单工厂
抽象工厂(工厂方法模式)
通用工厂
三、Spring环境搭建
1.导入jar包

2.创建Spring的配置文件
2.1 Spring的配置文件可以叫任意的名字,默认习惯于叫applicationContext.xml
2.2 Spring的配置文件可以在项目的任意位置,一般默认地会放在src的根目录下。
如果没有添加约束文件,需要自己手动或者联网状态下载Spring配置文件
3.在Spring的配置文件中通过<bean>标签来告知Spring管理哪个对象的生命周期。
其中有两个属性:
id表示唯一的一个标记,命名不可以重复;
ckass表示把具体的哪个类实例化
4.启动Spring框架
需要注意以下几个问题:
1.启动时指定创建哪个IOC容器
2.BeanFactry:基本的IOC容器。只是缓存对象。
3.ApplicationContext:高级IOC容器。是beanFactory的子接口 扩展了BeanFactory的能力。添加了如 解析properties 国际化等处理
四、IOC详解
1.IOC(Inversion of control)控制反转
2.控制:实例化对象的过程
3.反转:原来实例化一个对象的过程它的控制权是掌握在程序员手中的,而现在整个对象创建过程完全交给Spring来负责。
4.容器并不是指的web容器(Tomcat),它不能处理请求,该容器是指Spring缓存对象的集合(Map<String,Object>)
五、Spring创建bean的三种方式(包含两种工厂方式)
1.首先我们来说一下BeanFactory与ApplicationContext对象的区别
1.1创建对象的时间
BeanFactory是在调用getBean方法时先去创建对象
ApplicationContext是在启动spring框架时就将所有的对象创建好。
1.2能力上的区别
BeanFactory只是一个基本的IOC容器,只能缓存对象,没有的额外的能力。
ApplicaitonContenxt可以操作properties,国际化等。
2.使用无参的构造方法
Spring的配置文件
<bean id="suibian" class="com.tinner.dao.SpringTest"></bean>
3.使工厂模式来创建对象
<!-- 使用工厂模式来构建对象 -->
<!-- 1.配置能够产生对象的工厂 -->
<bean id="factory" class="com.tinner.commons.ObjectFactory"></bean>
<!-- 告知spring哪个工厂中调用的哪个方法 -->
<bean id="test" factory-bean="factory" factory-method="createSpringTest"></bean>
4.使用工厂中的静态方法来获取对象
<!-- 调用工厂中的静态方法获取对象 -->
<bean id="test" class="com.tinner.commons.ObjectFactory" factory-method="createSpringTest"></bean>
六、scope属性详解
scope属性是spring配置文件中<bean>标签的属性,它决定了采用什么方式来创建对象(单例、多例)
scope的取值范围:
Prototype:多例
Singleton:单例(默认)
七、DI详解与Spring的几种注入方式
1.DI:dependency injection 依赖注入
2.使用构造方法来完成值的注入
<constructor-arg index="" name="" type="" value=""></constructor-arg>
其中:
index:表示构造方法中的参数的位置,从0开始
name:按照构造方法的参数的名称完成注入
type:根据类型匹配位置
value:注入的值(value一般用于存放基本数据类型+String)
3.基于属性的注入方式
注意:
要求类中必须要含有一个无参的构造方法
要求属性必须提供set方法
例如:
<bean id="suibian" class="com.tinner.dao.SpringTest" scope="prototype">
<property name="msg" value="lisi"></property>
</bean>
4.注入其他类型
4.1注入set类型
<bean id="suibian" class="com.tinner.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.tinner.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.tinner.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注入proprties
<bean id="suibian" class="com.tinner.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.tinner.dao.UserDaoImpl"></bean>
<bean id="userServie" class="com.tinner.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>
网友评论