Bean 的生命周期
⽣命周期指的是⼀个对象从诞⽣到销毁的整个⽣命过程,我们把这个过程就叫做⼀个对象的⽣命周期.
Bean 的⽣命周期分为以下 5 个部分:
1. 实例化(为Bean分配内存空间)
2. 属性赋值( Bean 注⼊和装配,⽐如 @AutoWired )
3. 初始化
a. 执⾏各种通知,如 BeanNameAware ,BeanFactoryAware ,ApplicationContextAware 的接⼝⽅法.
b. 执⾏初始化⽅法
▪ xml定义 init-method
▪ 使⽤注解的⽅式 @PostConstruct
▪ 执⾏初始化后置⽅法( BeanPostProcessor )
4. 使⽤ Bean
5. 销毁 Bean
a. 销毁容器的各种⽅法,如 @PreDestroy ,DisposableBean 接⼝⽅法,destroymethod.
实例化和属性赋值对应构造⽅法和 setter ⽅法的注⼊.初始化和销毁是⽤户能⾃定义扩展的两个阶段,可以在实例化之后,类加载完成之前进⾏⾃定义"事件"处理.
执⾏流程如下图所示:
代码演示
@Component
public class BeanLife {private User user;/*** 实例化(为Bean分配内存空间)* */public BeanLife(){System.out.println("实例化 BeanLife 对象");}/*** 属性赋值(Bean注⼊和装配,⽐如 @AutoWired )* */@Qualifier("user")@Autowiredpublic void setUser(User user) {System.out.println("属性赋值");}/*** 初始化* */@PostConstructpublic void init(){System.out.println("初始化");}/*** 使⽤ Bean* */public void use(){System.out.println("执行了 use 方法");}/*** 销毁 Bean* */@PreDestroypublic void preDestroy(){System.out.println("销毁了 Bean ");}}
执行结果
根据执行结果可以看出,在 tomcat 启动之前,就已经做好了 1.实例化 2.属性赋值 和 3.初始化的工作
在 tomcat 启动以后就开始使用 Bean ,使用好以后,结束程序,就销毁了 Bean 对象