Bean生命周期:指的是Bean从创建到销毁的过程,分4大类:
1. 实例化
-
a.无参构造方法实例化、静态工厂方式实例化、实例工厂方式实例化
2. 属性赋值
-
a.解析自动装配(byName、byType、constractor、none、@Autowired) DI体现
autodetect在Spring3.0+弃用了。
-
b.循环依赖
3. 初始化
- a.调用XXAware回调
-
- 调用BeanNameAware的setBeanName()方法传入当前的Bean的id值
-
- 调用BeanfactoryAware的setBeanFactory()方法传入当前工厂的实例的引用
-
- 调用ApplicationContextAware的setApplicationContext()方法传入当前的ApplicationContext实例的引用.........
- b.调用初始化生命周期回调(三种)
-
- 通过注解的方式,@PostConstruct
-
- 通过接口InitialingBean
-
- 通过配置指定方法,init-monthod
- c.如果BeanPostProcessor和Bean关联,则调用postProcessBeforeInitialzation()对Bean进行讲过操作,实现aop,创建动态代理
4. 销毁
- 在Spring容器关闭的时候进行调用
- 调用销毁的生命周期回调
-
- 通过注解的方式,@PreDestroy
-
- 通过接口,DisposableBean,Spring会调用destory()方法将Spring中的bean销毁
-
- 通过配置指定方法,destroy-method