Bean工厂实现应尽可能支持标准Bean生命周期接口。 全套初始化方法及其标准顺序为:
1、BeanNameAware的setBeanName
2、BeanClassLoaderAware的setBeanClassLoader
3、BeanFactoryAware的setBeanFactory
4、EnvironmentAware的setEnvironment
5、EmbeddedValueResolverAware的setEmbeddedValueResolver
6、ResourceLoaderAware的setResourceLoader (仅在在应用程序上下文中运行时适用)
7、ApplicationEventPublisherAware的setApplicationEventPublisher (仅适用于在应用程序上下文中运行的情况)
8、MessageSourceAware的setMessageSource (仅适用于在应用程序上下文中运行的情况)
9、ApplicationContextAware的setApplicationContext (仅适用于在应用程序上下文中运行的情况)
10、ServletContextAware的setServletContext (仅适用于在Web应用程序上下文中运行的情况)
11、BeanPostProcessors的postProcessBeforeInitialization方法
12、InitializingBean的afterPropertiesSet
13、自定义的初始化方法定义
14、BeanPostProcessors的postProcessAfterInitialization方法
在关闭bean工厂时,以下生命周期方法适用:
1、DestructionAwareBeanPostProcessors的postProcessBeforeDestruction方法
2、DisposableBean的destroy
3、自定义销毁方法定义