Bean的生命周期方法
过程:
1.构造器
2.为bean设置值
3.调用bean的初始化方法
4.bean使用
5.当容器关闭时,调用bean 的摧毁方法
实例:
1.Car.class
public Car() {
super();
System.out.println("Car Construct....");
}
private String band;
public void setBand(String band) {
System.out.println("Set car...");
this.band = band;
}
@Override
public String toString() {
return "Car [band=" + band + "]";
}
public void init() {
System.out.println("Car init....");
}
public void distory() {
System.out.println("Car distory....");
}
2.bean_cycle.xml
扫描二维码关注公众号,回复:
3647459 查看本文章
<bean id="car" class="jjh.test.cycle.Car" init-method="init" destroy-method="distory">
<property name="band" value="Audi"></property>
</bean>
3.运行
可以看到bean的生命周期的过程
Bean后置处理器
1.MyBeanPostProcessor
@Override
public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("postProcessAfterInitialization"+arg0+" "+arg1);
return arg0;
}
@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
System.out.println("postProcessBeforeInitialization"+arg0+" "+arg1);
return arg0;
}
2.bean-cycle.xml
<bean id="car" class="jjh.test.cycle.Car" init-method="init" destroy-method="distory">
<property name="band" value="Audi"></property>
</bean>
<!-- 实现bean接口 具体实现两个方法
Object postProcessAfterInitialization(Object bean, String beanName):init-method前调用
Object postProcessBeforeInitialization(Object bean, String beanName):init-method后调用
bean:bean实例本身
beanName: IOC 容器配置bean的名字
返回值:实际上是返回值给原bean *可以在两个方法中修改返回bean
-->
<!-- 配置bean的处理器 不需要配置id 自动识别-->
<bean class="jjh.test.cycle.MyBeanPostProcessor"></bean>
3.结果
4.步骤
尝试在bean实例创建后修改bean,通过postProcessAfterInitialization()方法
在方法中新建一个实例,修改他的属性名
在方法初始化之后car的值被修改了