BeanFactory
BeanFactory作为spring的顶级接口,承载了以下功能:
- 提供framework的基础配置功能;
- 负责Bean的生命周期管理;
- IOC container(Bean的依赖管理)
- 作为一个应用程序组件(Component)的集中注册和配置中心
ApplicationContext作为BeanFactory的一个子接口,加入了以下企业级的标准的功能,包含:
- 更加容易的与Spring AOP 整合
- 消息资源(message resource)处理(i18n)
- 事件发布 (event publication)
- 提供一系列应用程序层面的Context,如WebApplicationContext。
BeanFactory的实现者需要支持标准的bean的生命周期的管理:
- BeanNameAware的setBeanName
- BeanClassLoaderAware的setBeanClassLoader
- BeanFactoryAware的setBeanFactory
- EnvironmentAware的setEnvironment
- EmbeddedValueResolverAware的setEmbeddedValueResolver
- ResourceLoaderAware的setResourceLoader
- ApplicationEventPublisherAware的setApplicationEventPublisher(适用于运行在application context中)
- MessageSourceAware的setMessageSource(适用于运行在 application context)
- ApplicationContextAware的setApplicationContext(适用于运行在 application context)
- ServletContextAware的setServletContext(适用于运行在 application context)
- BeanPostProcessor的postProcessBeforeInitialization
- InitializingBean的afterPropertiesSet
- 用户自定义的init-method
- BeanPostProcessor的postProcessAfterInitialization
- 如果BeanFactory需要关闭,还必须实现以下的生命周期方法:
DestructionAwareBeanPostProcessor的postProcessBeforeDestruction;DisableBean的destory方法;用户自定义的destroy-method