Spring Bean 的生命周期

1. Bean的生命周期

1. 实例化:Spring对bean 进行实例化;

2. 填充属性:Spring将值和bean 的引用注入到 bean 对应的属性中;

3. 如果bean 实现了 BeanNameAware接口,Spring将bean的ID传递给setBean-Name()方法;

4. 如果bean实现了 BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory 容器实例传入;

5. 如果 bean 实现了 ApplicationContextAware 接口,Spring 将调用setApplicationContext()方法,将bean所在的应用上下文的引用传人进来;

6. 前置处理器:如果bean 实现了 BeanPostProcessor接口,Spring 将调用它们的 post-ProcessBeforeInitialization()方法;

7. 如果 bean实现了 InitializingBean接口,Spring 将调用它们的 after-PropertiesSet()方法。

8. 如果 bean 使用init-method声明了初始化方法,该方法也会被调用;

9. 后置处理器:如果 bean 实现了 BeanPostProcessor接口,Spring 将调用它们的 post-ProcessAfterInitialization()方法;

10. 此时,bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;

11. 销毁:如果bean实现了 DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用。

2. 延迟加载

  默认情况下,容器启动后会将所有作用域为单例的 bean 都创建完成,我们可以通过 bean 的 lzay-init 属性延迟加载,等get这个bean时再创建这个 bean;

原文地址:https://www.cnblogs.com/virgosnail/p/9820736.html