设置bean生命周期
- 新建一个类
public class Pojo {
private String name;
public Pojo() {
System.out.println("创建对象");
}
public void init() {
System.out.println("初始化对象");
}
public void destroy() {
System.out.println("销毁方法");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Pojo [name=" + name + "]";
}
}
使用bean标签中的 init-method="对象方法名" 属性设置初始方法
使用bean标签中的 destroy-method="对象方法名" 属性设置销毁方法
<!-- 设置生命周期 方法 init-method="对象方法名" 属性初始方法
destroy-method="对象方法名" 属性销毁方法
-->
<bean id="pojo" class="pojo.Pojo" init-method="init"
destroy-method="destroy">
<property name="name" value="我是对象"></property>
</bean>
- spring 会在创建bean时调用 init-method设置的方法 销毁bean 调用 destroy-method 设置的方法
bean的后置处理器
- 1 后置处理器需要实现 BeanPostProcessor接口
public class MyBeanPostProcessor implements BeanPostProcessor{
@Override
public Object postProcessBeforeInitialization(Object bean, String arg1) throws BeansException {
//调用init-method前调用
}
@Override
public Object postProcessAfterInitialization(Object bean, String arg1) throws BeansException {
//调用 destroy-method 前调用
return bean;
}
}
- 2 spring容器调用bean的init初始化方法前调用处理器的postProcessBeforeInitialization
spring容器调用bean的destroy销毁方法前调用处理器的 postProcessAfterInitialization
- 3 后置处理器会监听所有的bean
- 4 后置处理器两个方法参数 第一个bean的对象 第二个bean配置的id
- 5 返回值是实际返回给用户对象
<bean id="MyBeanPostProcessor" class="pojo.MyBeanPostProcessor" ></bean>