1.什么是生命周期
生命周期是通常是指一个bean在ioc 容器中的一系过程。
- bean被创建(某个类的构造方法被初始化)
- bean的初始化这个bean初始化方法(
init()
\afterPropertiesSet()
\@PostConstruct标注的方法
)被调用。 - bean的销毁这个bean销毁方法(
destroy()
\@PreDestroy标注的方法
)被调用
2.生命周期中常用的注解
2.1 生命周期的实现方法 定义 init()以及destroy()
bean的定义代码
public class Blue {
public Blue(){
System.out.println("Blue constructor ......");
}
public void init(){
System.out.println("init ing.....");
}
public void destroy(){
System.out.println("destroy");
}
}
生命周期的调用方法
public class MyConfing {
@Bean(initMethod = "init",destroyMethod = "destroy")
public Blue blue(){
return new Blue();
}
}
2.2 bean通过实现 initlizingBean,DisposableBean接口重写相关方法
public class Green implements InitializingBean,DisposableBean{
public Green green(){
System.out.println("Green的构造方法执行。。。。。");
return new Green();
}
//销毁方法
@Override
public void destroy() throws Exception {
System.out.println("Green 的销毁方法执行。。。。");
}
//初始化方法
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("Green的初始化方法执行。。。。。");
}
}
2.3使用jsr规范的注解指定生命周期的方法
public class Gray {
public Gray gray(){
System.out.println("Gray 的构造方法执行。。。");
return new Gray();
}
//初始化方法
@PostConstruct
public void init(){
System.out.println("Gray的初始化方法执行。。。");
}
//销毁方法
@PreDestroy
public void destroy(){
System.out.println("Gray的销毁方法执行");
}
}
3.触发调用生命周期的方法
使用@Bean的注解方法来触发
public class MyConfing {
//指定初始化方法
@Bean(initMethod = "init",destroyMethod = "destroy")
public Blue blue(){
return new Blue();
}
}
实现接口与使用注解方式不用手动触发,由容器来调用。