为什么要关注Spring容器中Bean的生命周期?
因为我们需要依据Bean注册到容器的不同时间点进行拦截或其它一系列操作,使得程序员对控制反转这一过程具有更好的控制力和介入能力。
实例化对象在容器中的生命周期如下:
上图中,的四个方法,分别在Bean的不同生命周期内执行,其中红色的两个节点分别在Bean的初始化后和销毁前执行,一共有三种实现方式:
1.通过@Bean注解只当intit-method和destroy-method方法完成对Bean初始化方法和销毁方法的指定。
定义一个类名称为YuanQiShaoNv:
public class YuanQiShaoNv {
public YuanQiShaoNv(){
System.out.println("元气少女执行构造方法。。。");
}
public void init(){
System.out.println("元气少女执行初始化之后执行的方法");
}
public void destroy(){
System.out.println("元气少女指定销毁之前执行的方法");
}
}
配置类如下:
@Configuration//告诉Spring容器,这个类是一个配置类需要在执行是被加载
public class Config2 {
/**
* 通过在注解中指定Bean对象的生死监听,就是指定Bean对象的Init方法和Destroy方法
* @return
*/
@Bean(value = "YuanQiShaoNv",initMethod = "init",destroyMethod = "destroy")
public YuanQiShaoNv getStudent(){
return new YuanQiShaoNv();
}
}
可以看出来,我们在@Bean标签中通过init-method和destroy-method指定了初始化和销毁方法。
测试类如下:</