1.生命周期的含义
(1)对象创建到销毁的过程
2.bean生命周期(不含后置处理器)5步
(1)通过构造器创建bean实例(调用无参数构造)
(2)为bean的属性设置值和对其他bean的使用(调用set方法)
(3)调用bean的初始化方法(需要进行配置初始化的方法)
(4)bean可以使用了(对象获取到了)
(5)当容器关闭时候,调用bean的销毁方法(需要进行配置销毁方法)
3.演示bean的生命周期
(1)创建orders类
public class Orders { private String oname; public Orders() { System.out.println("第一步 执行bean实例"); } public void setOname(String oname) { this.oname = oname; System.out.println("第二步 set方法设置属性值"); } // 创建执行的初始化方法 public void init(){ System.out.println("第三步 执行初始化方法"); } // 创建执行的销毁方法 public void destroyMethod(){ System.out.println("第五步 执行销毁方法"); } }
(2)配置xml中的文件
<bean id="orders" class="com.company.spring5.Bean.Orders" init-method="init" destroy-method="destroyMethod" > <property name="oname" value="zk"></property> </bean>
(3)测试类的输出,关闭bean方法,因为ApplicationContext接口中没有close方法,只能调用他的子类ClassPathXmlApplicationContext。
4.bean的后置处理器,bean的生命周期为7步
(1)通过构造器创建bean实例(调用无参数构造)
(2)为bean的属性设置值和对其他bean的使用(调用set方法)
(3)把bean的实例传递到bean的后置处理器的方法postProcessBeforeInitialization
(4)调用bean的初始化方法(需要进行配置初始化的方法)
(5)把bean的实例传递到bean的后置处理器的方法postProcessAfterInitialization
(6)bean可以使用了(对象获取到了)
(7)当容器关闭时候,调用bean的销毁方法(需要进行配置销毁方法)
5.添加后置处理器的效果
(1)创建类实现接口BeanPostProcessor,创建后置处理器
public class MybeanPost implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("在初始化之前执行的方法"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("在初始化之后执行的方法"); return bean; } }
(2)xml中配置后置处理器,会对所有bean对象执行
<bean id="orders" class="com.company.spring5.Bean.Orders" init-method="init" destroy-method="destroyMethod" > <property name="oname" value="zk"></property> </bean> <!--后置处理器啊配置--> <bean id="myhbeanpost" class="com.company.spring5.Bean.MybeanPost"></bean>
(3)执行结果