首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring bean的生命周期[通俗易懂]

    1. Spring对bean进行实例化,即相当于New Bean(); 2. Spring将bean的属性值(如果有)和bean的引用(如果有)注入到bean对应的属性中; 3. 如果bean实现了BeanNameAware接口(Spring不推荐使用), 则Spring将bean的id传递给setBeanName(String name)方法,以方便在bean factory中知道bean的name; 4. 如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory(BeanFactory beanFactory)方法, 将BeanFactory容器实例传入,以便bean能够通过BeanFactory容器中的相关beans; 5. 如果bean实现了ApplicationContextAware接口(Spring 推荐), Spring将调用setApplicationContext(ApplicationContext applicationContext)方法, 将bean所在的applicationContext的引用传入进来,以便bean能够通过applicationContext中的其他beans; 6. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessBeforeInitialization(Object bean, String beanName)方法; 7. 如果bean实现了InitializingBean接口, Spring将调用它们的afterPropertiesSet()方法。 类似地, 如果bean使用init-method声明了初始化方法, 该方法也会被调用; 8. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessAfterInitialization(Object bean, String beanName)方法; 9. 经过以上操作, bean一切已经准备就绪, 可以被应用程序使用了, bean将一直驻留在应用上下文中,直到该应用上下文(即applicationContext)被销毁; 10. 如果bean实现了DisposableBean接口, Spring将调用它的destroy()接口方法。 同样, 如果bean使用destroy-method声明了销毁方法, 该方法也会被调用。

    01
    领券