Spring中Bean的生命周期,在学习spring的过程中bean的生命周期理解对学习spring有很大的帮助,下面我就分别介绍在 ApplicationContext和BeanFactory中Bean的生命周期。
1、在ApplicationContext中Bean的生命周期
生命周 期执行的过程如下:
1、需找所有的bean根据bean定义的信息来实例化bean
2、使用依赖注入,spring按bean 定义信息配置bean的所有属性
3、若bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递bean 的ID。
4、若bean实现了BeanFactoryAware接口,工厂调用setBeanFactory() 方法传入工厂自身。
5、若 bean实现了ApplicationContextAware()接口,setApplicationContext()方法会被调用
6、若BeanPostProcessor和 bean关联,
则它们的postProcessBeforeInitialization()方法被调用
7、若bean指定了init- method="init"方法、,它将被调用。
8、若有BeanPostProcessor和bean关联,
则它们的 postProcessAfterInitialization()方法被调用
注意:通过已上操作,此时的Bean就可以被应用的系统使用,并讲保 留在BeanFactory工厂中直到不再需要为止.但我们也可以通过9或者10进行销毁
9、若bean实现了DisposableBean接 口,distroy()方法被调用
10、如果指定了destroy-method="close"定制的销毁方法,就调用这个方法
案例分析:
创建一个实体Bean代码如下:
package www.csdn.spring.dao; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class HelloDaoImpl implements BeanNameAware, BeanFactoryAware, InitializingBean, ApplicationContextAware, DisposableBean { private String content; public HelloDaoImpl() { System.out.println("----------HelloDaoImpl实例化"); } public void setContent(String content) { System.out.println("----------通过依赖注入的内容是:" + content); this.content = content; } @Override public void setBeanName(String beanId) { System.out.println("----------输出BeanId:" + beanId); } @Override public void setBeanFactory(BeanFactory factory) throws BeansException { System.out.println("----------factory:" + factory.getClass()); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("----------" + applicationContext); } @Override public void afterPropertiesSet() throws Exception { System.out.println("----------afterPropertiesSet"); } public void init() { System.out.println("----------初始化方法"); } @Override public void destroy() throws Exception { System.out.println("----------bean被销毁"); } public void close() { System.out.println("----------close"); } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索applicationcontext
, bean
, 方法
, system
, springframework
, public
, spring bean
, println
Bean的生命周期
spring bean生命周期、springbean的生命周期、spring bean 入门、bean的生命周期、bean生命周期,以便于您获取更多的相关知识。