spring生命周期
1.实例化bean
BeanFactory容器
当请求bean时才去初始化,调用createBean方法applicationContext容器
容器启动完后则从beanDefinition
获取对象信息,实例化所有的bean
2.依赖注入
实例化的对象放在BeanWrapper
,然后spring会根据beanDefinition对象信息及wrapper提供的接口完成依赖注入
3.检查Aware
spring会检查该对象是否实现了Aware接口,并将响应的Aware实例注入Bean
- 如果这个Bean实现了BeanNameAware接口
则调用它实现的setBeanName(String beanId),为spring配置文件bean的id值 - 如果这个Bean实现了BeanFactoryAware接口
则调用它实现的setBeanFactory(),传递的是spring工厂本身 - 如果这个Bean实现了ApplicationContextAware接口
则调用setApplicationContext(ApplicationContext),传入spring上下文
以下我都不懂!!!
4.BeanPostProcessor前置处理
如果想对bean做自定义处理,则可以实现BeanPostProcessor,调用postProcessBeforeInitialization(Object obj, String s)方法
5.InitializingBean与init-method
如果bean在spring配置文件中设置了init-method属性,则会自动调用其配置的初始化方法
6.BeanPostProcessor后置处理
如果想对bean做自定义处理,则可以实现BeanPostProcessor,调用postProcessAfterInitialization(Object obj, String s)方法
** 到此Bean就已经被正确创建了,可以调用了**
7.1 DisposableBean
如果Bean不需要用的话就需要清理,当Bean有实现DisposableBean
接口,就会自动调用实现的destory()方法
7.2 destroy-method
如果这个Bean的spring配置中配置了destory-method,则会自动调用其配置的摧毁方法