Bean管理XML方式
1.core container(核心容器) 所需要的jar包:
beans,core,context,expression,commons-logging(日志)
2.IOC(概念和原理)
原理: 利用xml解析、工厂模式、反射
spring提供IOC容器实现两种方式:(两个接口)
1.BeanFactory:IOC容器的基本实现,是spring内部使用的接口。
2.ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能。
实现类:FileSystemXmlApplicationContext 硬盘中绝对路径
ClassPathXmlApplicationContext 类路径
区别: BeanFactory加载配置文件的时候不会创建对象,在获取对象(使用)的时候才会创建对象。 ApplicationContext 在加载配置文件的时候就会把配置文件中的对象全部创建,存入Map集合中。
3.IOC基本使用
1.基础类型注入
1.set方法注入 <bean id="" class="" > <property name="" value="" /> <property name="" value="" /> </bean> 2.有参构造方法注入 <bean id="" class="" > <constructor-arg name="" value=""></constructor-arg> <constructor-arg name="" value=""></constructor-arg> </bean> 3.设置NULL值 <bean id="" class="" > <property name="" > <null/> </property> </bean> 4.设置特殊字符 1.可以使用转译字符, 如:<, > 2.把带特殊符号的写入CDATA内 <bean id="" class="" > <property name="" > <value><![CDATA[<<南京>>]]></value> </property> </bean>
id: 唯一标识,为类命名。 存入Map中的键
class:类全路径名
name:属性名
value:属性值
创建对象是默认创建无参构造方法
2.引用类型注入
1.引用外部bean <bean id="" class="" > <property name="" ref="对应bean标签中的id"> </bean> 2.内部bean <bean id="" class="" > <property name="" value=""> <property name="" value=""> <property name=""> <bean id="" class=""> <property name="" value="" /> </bean> </property> </bean> 3.级联bean <bean id="" class="" > <property name="" value="" /> <property name="object" ref="Object" /> <property name="object.property" value=""/> </bean>
3.集合注入
数组 <bean id="" class=""> <property name=""> <array> <value>值</value> <value>值2</value> </array> </property> </bean> List <bean id="" class=""> <property name=""> <list> <value>值</value> <value>值2</value> </list> </property> </bean> Map <bean id="" class=""> <property name=""> <map> <entry key="" value=""></entry> <entry key="" value=""></entry> </map> </property> </bean> Set <bean id="" class=""> <property name=""> <set> <value>值</value> <value>值2</value> </set> </property> </bean>
集合注入引用类型
List <bean id="" class=""> <property name=""> <list> <ref bean="bean id值">值</ref> </list> </property> </bean>
IOC bean管理
普通bean:在配置文件中定义bean类型就是返回类型
工厂bean:在配置文件中定义bean类型可以和返回的类型不一样
普通类实现FactoryBean<Student> 实现方法
public Student getObject() throws Exception{
return new Student();
}
创建返回的就是一个Student对象
Bean的作用域
<bean id="" class="" scope="singleton"> 默认单实例
单实例(singleton):在加载配置文件的时候创建一个实力对象。
多实例(prototype):不是在加载配置文件的时候创建,而是在调用的时候创建多实例的对象。
Bean的生命周期
1.执行无参构造方法
2.调用set方法设置属性值
3.把bean实例传递给bean后置处理器的方法 postProcessBeforeInitialization
4.执行初始化方法(需要在bean标签中加入属性 init-method="方法名")
5.把bean实例传递给bean后置处理器的方法 postProcessAfterInitialization
6.获取bean实例对象
7.执行销毁方法(需要在bean标签中计入属性 destroy-method="方法名")
怎么创建后置处理器?
1.实现接口 BeanPostProcess
实现方法:
1)postProcessBeforeInitialization
2)postProcessAfterInitialization
2.添加spring配置文件
<bean id="" class="后置处理器类全路径"></bean>
添加了后置处理器之后会把当前配置文件所有类,都加上后置处理
IOC操作 bean 管理(xml 自动装配)
实现自动装配
1. 在bean标签中加入属性autowrite=""
2.有两个值:
byName:根据属性名称注入,注入值bean的id值和属性名称一样。
byTpye:根据属性类型注入,会自动匹配配置文件中相同类型的对象,如果有两个相同类型对象则会报错。
引入外部属性文件
<context:property-placeholder location="classpath:路径名">
使用${} 表达式就可以取属性文件中对应的属性值

浙公网安备 33010602011771号