Bean的生命周期:
-
创建(new ...) -> 初始化(赋初值)-> ....使用... -> 销毁 (servlet)
方法一: Student.java ——适用于:@Bean+返回值方式
1、编写初始化、销毁方法
public class Student {
public void myInit() {
System.out.println("init----");
}
public void myDestory() {
System.out.println("destory ----");
}
}
2、配置:
@Bean(value = "student",initMethod = "myInit",destroyMethod = "myDestory")
application.xml
<bean id="student" class="org.entity.Student" init-method="myInit" destroy-method="myDestory">
IOC的顺序:IoC容器在初始化时,会自动创建对象(构造方法) -> init ->… -> 当容器关闭时 调用destroy…
方法二 : 三层注解+功能性类注解@Component
- JSR250规范,两个注解
- 1.将响应组件 加入 @Component注解、 给初始化方法加@PostConstruct、给销毁方法加@PreDestroy
@PostConstruct:相当于方法一的init
@PreDestroy:相当于方法一的destroy
- 1.将响应组件 加入 @Component注解、 给初始化方法加@PostConstruct、给销毁方法加@PreDestroy
@Component("testConverter")
public class TestIntToStringConverter {
@PostConstruct
public void init(){
System.out.println("init+++");
}
public void myConvertor(){
System.out.println("---核心方法---");
}
@PreDestroy
public void destory(){
System.out.println("destory+++");
}
}
方法三:两个接口 ——适用于三层组件(扫描器+三层组件)
- 初始化:只需要 实现InitializingBean接口中的**afterPropertiesSet()**方法
- 销毁:实现DisposableBean 接口中的**destroy()**方法
@Component
public class MyFunction implements InitializingBean , DisposableBean {
public void myConvertor(){
System.out.println("---核心方法---");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("myFunction init.....");
}
@Override
public void destroy() throws Exception {
System.out.println("myFunction destroy...");
}
}
方法四:一个接口 ——适用于三层组件
- 给容器中的所有Bean加初始化、销毁
- 接口BeanPostProcessor:拦截了所有中容器的Bean
@Component
public class MyBean implements BeanPostProcessor {
//会拦截所有的bean 加初始化
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
//可以对 所有的bean 进行修改 以及更换
if(bean instanceof Student){
Student stu = (Student)bean;
stu.setName("Student.name已被修改----");
System.out.println("...MyBean ..init.....");
return stu ;
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("MyBean ..destory..");
return bean;
}
}
总结
- 如果是注解形式 , 随便写一个方法 ,然后加上相应注解即可
- 如果是接口形式,必须 实现接口中规定的方法
本文详细介绍了Spring框架中Bean的生命周期管理,包括初始化、销毁等阶段。通过四种不同方式展示了如何定义和实现Bean的生命周期方法,涉及注解、接口及BeanPostProcessor的使用。
306

被折叠的 条评论
为什么被折叠?



