一:Bean初始化执行方法
- 通过在方法名上添加@PostConstruct执行
- 通过实现InitializingBean接口中的afterPropertiesSet()执行
- 通过@Bean(initMethod = "init3")执行
@Slf4j public class Bean1 implements InitializingBean { @PostConstruct public void init1(){ log.debug("初始化1"); } @Override public void afterPropertiesSet() throws Exception { log.debug("初始化2"); } //通过@Bean(initMethod = "init3") public void init3(){ log.debug("初始化3"); } }
@Configuration public class BeanConfig1 { @Bean(initMethod = "init3") public Bean1 bean1(){ return new Bean1(); } }
执行顺序也是如上:
-
先执行@PostConstruct修饰的方法
-
第二步执行实现InitializingBean接口中的afterPropertiesSet()
-
第三步执行@Bean(initMethod = "init3")指定的方法
二:Bean销毁执行的方法
- 通过在方法名上添加@PreDestroy执行
- 通过实现DisposableBean接口中的destroy()执行
- 通过@Bean(destroyMethod = "destroy3")执行
@Slf4j
public class Bean2 implements DisposableBean {
@PreDestroy
public void destroy1(){
log.debug("销毁1");
}
@Override
public void destroy() throws Exception {
log.debug("销毁2");
}
//通过@Bean(destroyMethod = "destroy3")
public void destroy3(){
log.debug("销毁3");
}
}
@Configuration
public class BeanConfig2 {
@Bean(destroyMethod = "destroy3")
public Bean2 bean2(){
return new Bean2();
}
}
执行顺序也是如上:
- 先执行@PreDestroy修饰的方法
-
第二步执行实现DisposableBean接口中的destroy()
-
第三步执行@Bean(destroyMethod = "destroy3")指定的方法