spring中bean的生命周期一般如下:
(1)bean实例化,查找到bean的类相关信息并通过反射实例化
(2)bean的属性设置。设置bean的相关属性
(3) 如果实现了BeanNameAware,调用setBeanName方法
(4)如果实现了BeanClassLoaderAware,调用setBeanClassloader方法
(5)如果实现了BeanFactoryAware,调用setBeanFactory
(6)如果实现了EnviromentAware,调用setEnviroment
(7)如果实现了EmbeddedValueResolverAware,调用setEmbeddedValueResolver方法
(8)如果实现ResouceLoaderAware,调用setResouceLoader方法
(9)如果实现了ApplicationEventPublisherAwaret,调用setApplicationEventPublisher方法
(10)如果实现了MessageSourceAware,调用setMessageSource方法
(11)如果实现了ApplicationContextAwate,调用setApplicationContext方法
如果是WebApplicaiton
(12)如果实现ServletContextAware,调用setServletContext方法
如果不是WebApplicaiton开始后置处理
(12)如果实现BeanPostProcessor,调用postProcessBeforeInitialization方法
(13)如果实现InitializingBean,调用afterPropertiesSet方法
(14)调用用户自定义的init-method
(15)如果实现BeanPostProcessor,调用postProcessAfterInitialization方法
(16)如果实现DisposableBean,当容器关闭的时候,调用destroy方法
(17)当容器关闭,调用自定义的destroy-method