BeanFactory
访问bean容器的根接口。此接口的实现类保存多个 bean 定义,每个bean 定义有名称唯一标识。根据bean定义,工厂将返回一个独立的包含对象(Prototype设计模式)的实例,或者返回一个单一的共享实例(一个单一的设计模式是一个更好的替代方案,其中实例在工厂的scope中是单例的)。将返回哪种类型的实例取决于bean工厂配置:API是一样的。自Spring 2.0起,根据具体的应用环境(例如Web环境中的“请求”和“会话”)范围,可以使用其他范围。这个方法的要点是BeanFactory是应用程序组件的中央注册表,并集中了应用程序组件的配置(例如,单个对象不需要读取属性文件)。 Bean Factory实现应尽可能地支持标准的bean生命周期接口。 全套初始化方法及其标准顺序为:
- BeanNameAware's setBeanName(唯一标识感知)
- BeanClassLoaderAware's setBeanClassLoader(设置类加载器感知)
- BeanFactoryAware's setBeanFactory BeanFactory感知
- EnvironmentAware's setEnvironment 环境感知(dev test prod etc.)
- EmbeddedValueResolverAware's setEmbeddedValueResolver (嵌入的值解析器感知)
- ResourceLoaderAware's setResourceLoader (only applicable when running in an application context) 资源加载器感知
- ApplicationEventPublisherAware's setApplicationEventPublisher (only applicable when running in an application context) 应用事件发布者感知
- MessageSourceAware's setMessageSource (only applicable when running in an application context) 消息资源感知
- ApplicationContextAware's setApplicationContext (only applicable when running in an application context) 应用上下文感知
- ServletContextAware's setServletContext (only applicable when running in a web application context) ServletContext感知
- postProcessBeforeInitialization methods of BeanPostProcessors bean初始化前置处理
- InitializingBean's afterPropertiesSet bean初始化属性设置后处理
- a custom init-method definition <bean init-method="xxx"/> 调用xxx方法
- postProcessAfterInitialization methods of BeanPostProcessors bean初始化后处理
在关闭bean工厂时,应用以下生命周期方法:
- postProcessBeforeDestruction methods of DestructionAwareBeanPostProcessors 析构感知bean后置处理器
- DisposableBean's destroy DisposableBean的 destroy()方法
- a custom destroy-method definition <bean destroy-method="xxx"/> 调用xxx方法