Spring中Bean初始化和销毁方法执行的优先级
程序员文章站
2022-05-21 23:05:58
...
Spring有三对初始化和销毁方法
- 通过@Bean注解指定initMethod和destroyMethod
- 实现InitializingBean和DisposableBean接口
- 使用@PostContruct和@PreDestroy
那么问题来了,这三个执行的优先级是什么呢?
定义一个Car类
public class Car implements InitializingBean, DisposableBean {
public Car() {
System.out.println("car constructor");
}
@PostConstruct
public void postConstruct(){
System.out.println("postConstruct");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("InitializingBean afterPropertiesSet");
}
public void initMethod(){
System.out.println("initMethod");
}
@PreDestroy
public void preDestroy(){
System.out.println("preDestroy");
}
@Override
public void destroy(){
System.out.println("DisposableBean destroy");
}
public void destroyMethod(){
System.out.println("destroyMethod");
}
}
定义配置类,并注入
@Configuration
public class MyConfigOfLifeCycle {
@Bean(initMethod = "initMethod",destroyMethod = "destroyMethod")
public Car car(){
return new Car();
}
}
测试
@Test
public void test04(){
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConfigOfLifeCycle.class);
System.out.println("容器创建完成");
Object car = context.getBean("car");
context.close();
}
执行结果
car constructor
postConstruct
InitializingBean afterPropertiesSet
initMethod
容器创建完成
preDestroy
DisposableBean destroy
destroyMethod
结论
优先级:@PostConstruct>InitializingBean>通过@Bean指定
推荐阅读
-
spring初始化bean时执行某些方法完成特定的初始化操作
-
Spring5 - Bean的初始化和销毁的4种方式
-
Spring中bean的初始化和销毁几种实现方式详解
-
Spring中为bean指定InitMethod和DestroyMethod的执行方法
-
bean的作用域、初始化和销毁方法及生命周期
-
Spring中Bean的生命周期自定义销毁和初始化方法实现详解
-
spring注册组件——@Bean的生命周期(指定初始化和销毁方法)示例
-
【Spring】【Bean的scope属性】【Bean的初始化和销毁方法】
-
spring初始化bean和销毁bean时调用的方法
-
spring Bean的初始化和销毁生命周期方法