Spring bean
生命周期主要分7个周期:
- 通过构造器创建
bean
实例 - 向
bean
中注入属性 - 把
bean
的实例传递给后置处理器 - 初始化
bean
(需要配置初始化的方法) - 把
bean
的实例传递给后置处理器 - 可以使用
bean
- 销毁
bean
(需要配置销毁的方法)
下面测试一下:
一、Test bean:
public class TestBeanLife {
private String id;
private String name;
public TestBeanLife(){
System.out.println("第一步,通过构造器创建bean实例");
}
public void setId(String id) {
System.out.println("第二步,向bean中注入属性");
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void init_method(){
System.out.println("第四步,初始化bean(需要配置初始化的方法)");
}
public void destroy_method(){
System.out.println("第七步,销毁bean(需要配置销毁的方法)");
}
}
二、后置处理器:
public class HouZhi implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("第三步,把bean的实例传递给后置处理器"+"---"+bean);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("第五步,把bean的实例传递给后置处理器"+"---"+bean);
return bean;
}
}
三、XML配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="beanLife" class="cn.kexing.beanLife.TestBeanLife" init-method="init_method" destroy-method="destroy_method">
<property name="id" value="11111111"></property>
<property name="name" value="张三"></property>
</bean>
<!-- 后置处理器-->
<bean id="houzhi" class="cn.kexing.beanLife.HouZhi"></bean>
</beans>
四、Test
@Test
//测试bean的生命周期
public void testBeanLife(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean8.xml");
TestBeanLife beanLife = context.getBean("beanLife",TestBeanLife.class);
System.out.println("第六步,可以使用bean");
System.out.println(beanLife);
//需手动销毁
context.close();
}