一.使用ApplicationContext获取bean与使用bean工厂获取bean有什么区别?
答: ApplicatonContext在初始化时如果bean的scope是singleton时就已经创建了bean对象。bean工厂则是在调用getBean方法时才创建的bean对象(有点像延迟加载),一般都是使用ApplicationContext来创建,如果内存非常小,则选用bean工厂来创建。
二.Bean的生命周期(通过ClassPathXmlApplicationContext来获取bean对象)
1.调用无参构造函数初始化对象
2.调用set方法设置属性值
3.实现BeanNameAware可以获取引用id
4.实现BeanFactoryAware可以获取bean工厂
5.实现ApplicationContextAware可以获取spring容器对象
6.定义一个类实现BeanPostProcessor接口,可以对初始化的所有对象进行编程(aop),后置处理器
7.定制初始化方法(init)
8.使用bean
9.关闭容器
10.调用销毁方法
三.属性注入
通过set注入:
1.如果注入的是基本类型的数组,可以使用以下方式来为属性赋值
<list>
<value></value>
</list>
2.如果注入的是list集合,并且类型是一个自定义对象时,使用如下方式
<list>
<ref bean=""/>
</list>
3.如果注入的是set集合,并且类型是一个自定义对象时,使用如下方式
<set>
<ref bean=""/>
</set>
4.如果注入的是map
<map>
<entry key ="", value 或者是value-ref =""></entry>
</map>
通过构造方法注入:
<constructor-arg> 类型有index 代表顺序,type代表java类型,value表示简单的数据类型的值,ref表示一个引用对象