Bean生命周期全部完整过程不再阐述,以下主要描述四种方式完成Bean注册前后执行的初始化方法和销毁方法,Bean被注册后是怎么执行初始化和销毁方法: Bean被注册前后可以设置执行的初始化和容器关闭时执行销毁方法,这些方法是我们可以自己定义的。
方式一:
通过@Bean指定init-method和destroy-method参数的两个值
init-method = 初始化方法: 对象创建完成,并赋值好后,调用初始化方法
destroy-method = 销毁对象对方: 容器关闭时对象销毁 (如果是多实例容器不会去调用销毁方法)
配置类代码:
@Configuration
public class Config1 {
/**
* initMethod: 该bean被创建并赋值完调用的初始化方法
* destroy: 容器关闭时调用该bean的销毁方法
* @return
*/
@Bean(initMethod = "init", destroyMethod = "destroy")
public Life life(){
return new Life();
}
}
实体类代码: 因为只声明注册一个Life类的Bean
public class Life {
public void init(){
System.out.println("life调用初始化方法...");
}
public void destroy(){
System.out.println("life调用销毁方法...");
}
}
测试代码:
//根据配置类启动容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config1.class);
//获取所有已被注册的bean的id
String[] ids = applicationContext.getBeanDefinitionNames();
for(String s : ids){
System.out.println("容器中有: " + s);
}
//关闭容器
applicationContext.close();