bean的生命周期
1、生命周期
(1)从对象创建到对象销毁的过程
2、bean 生命周期(五步)
(1)通过构造器创建 bean 实例(无参数构造)
(2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)调用 bean 的初始化的方法(需要进行配置初始化的方法)
(4)bean 可以使用了(对象获取到了)
(5)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
bean类
public class Order {
private String oname;
public Order() {
System.out.println("第一步,无参构造方法,实例化bean");
}
public void setOname(String oname) {
this.oname = oname;
System.out.println("第二步,调用set设置属性方法");
}
//需要自己创建在xml文件中通过init-Method属性配置
public void init(){
System.out.println("第三步,初始化方法");
}
//需要自己创建在xml文件中通过destory-Method属性配置
public void destory(){
System.out.println("第五步,销毁方法");
}
}
xml文件
<!--配置init方法和destory方法 -->
<bean id="order" class="com.zjj.spring5.Order"
init-method="init"
destroy-method="destory">
<property name="oname" value="电脑"></property>
</bean>
代码演示
@Test
public void test5(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean4.xml");
Order order = context.getBean("order", Order.class);
System.out.println("第四步,bean对象已经创建完成,开始使用");
((ClassPathXmlApplicationContext)context).close();
}
4、加上bean 的后置处理器,bean 生命周期有七步
后置处理器需要实现BeanPostProcessor接口,重写方法
(1)通过构造器创建 bean 实例(无参数构造)
(2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)把 bean 实例传递 bean 后置处理器的方法 postProcessBeforeInitialization
(4)调用 bean 的初始化的方法(需要进行配置初始化的方法)
(5)把 bean 实例传递 bean 后置处理器的方法 postProcessAfterInitialization
(6)bean 可以使用了(对象获取到了)
(7)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
MyPost后置处理器
public class MyPost 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;
}
}
xml文件配置
<!-- 配置后置处理器(实现接口后自动识别)-->
<bean id="myPost" class="com.zjj.spring5.MyPost"></bean>
结果
总结
还阔以