1.说一下spring bean的生命周期
BeanDefinition-------->实例化----->属性赋值-------> 初始化------------>销毁
- spring启动,查找并加载需要被spring管理的bean,进行bean的实例化
- bean的属性注入
- 如果实现了BeanNameAware接口,会调用setBeanName(String beanId),参数传入的是Spring配置文件中的bean的id
- 如果现实了BeanFactoryAware接口,会调用setBeanFactory()方法,将BeanFactory实例传入
- 如果实现了ApplicationContextAware接口,会调用setApplicationContext()方法,将bean所在的应用上下文应用传入
- 如果实现了BeanPostProcessor接口,回调用postProcessBeforeInitailization(Object obj,String s),BeanPostProcessor经常是被用作bean内容的更改
- 如果实现了BeanInitailizting接口,会调用afterPropertiesSet()方法,如果bean使用了init-method声明了初始化方法,改方法也会被调用。
- 如果实现了BeanPostProcessor接口,会调用postProcessAfterInitialization()方法,
- bean准备就绪,可以使用,直到被销毁。
- 如果bean实现了DisposableBean接口,Spring将调用他的destroy方法。同样的,如果bean使用了destroy方法声明了销毁方法,该方法也会被调用。