获得徽章 0
- 1.Spring根据Bean的配置情况创建一个Bean;
2.Spring根据上下文使用依赖注入填充实例化Bean的属性;
3.如果Bean实现了BeanNameAware接口,则调用setBeanName()方法,参数为配置文件中Bean的id;
4.如果Bean实现了BeanFactoryAware接口,则调用setBeanaFactory()方法,参数为工厂实例引用;
5.如果Bean实现了ApplicationContextAware接口,则调用setApplicationContex()方法,参数为spring上下文对象;
6.如果Bean关联了BeanPostProcessor接口,则调用postProcessBeforeInitialization()方法对Bean预初始化;(注:该接口中有两个方法需要实现,分别是预初始化,后初始化见第8步)
7.如果Bean实现了InitializingBean接口,将调用afterPropertiesSet()方法进行初始化;
8.如果在Bean的配置中配置了init-method属性,将自动调用该初始化方法;
9.如果关联了BeanPostProcessor接口,将调用postProcessAfterInitialization()方法对Bean后初始化;
10.当Bean不再需要时将进入销毁阶段,如果实现了DisposableBean接口,则调用destroy方法销毁bean;
11.如果在配置文件中配置了detroy-method属性,则调用该方法。
总体上来看,Bean的生命周期与Servlet类似:初始化》使用》销毁。展开赞过23
![[呲牙]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_2.cd1e2bd.png)