1、Spring IOC 流程

两个阶段:容器启动阶段和Bean实例化阶段

Spirng IOC容器充分利用这两个阶段的特点,在每个阶段都加入了相应的容器扩展点,可以方便的加入自定义的扩展逻辑。

2、容器启动阶段:

  • 加载配置(比如xml文件)
  • 解析配置文件(BeanDefinitonReader)
  • 将解析出来的Bean信息保存到BeanDefiniton,并注册到BeanDefinitionRegisty
  • 其他处理

3、Bean实例化阶段:当通过容器的getBean()方法请求某个对象,或者因为有依赖关系容器隐式的调用getBean方法时,会触发Bean实例化阶段。

  • 检查请求对象是否已经初始化。
  • 如果没有,根据注册的BeanDefinition提供的信息实例化被请求的对象,并依赖注入。
  • 检查对象是否实现了某些回调接口,如果有,会根据回调接口要求装配。

4、BeanFactoryPostProcessor是容器启动阶段扩展机制允许在容器实例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做相应的修改。

  • PropertyPlaceHoderConfigurer
  • PropertyOverrideConfigurer
  • CustomEditorConfigurer

5、PropertyEditor属性编辑器:

  • StringArrayPropertyEditor,FileEditor等
  • 自ertyEditor例子定义Prop
  • 详细讲解PropertyEditor
    http://blog.csdn.net/pentiumchen/article/details/44026575


Spring IOC AOP深入

6、Aware接口

(1)、BeanNameAware
(2)、BeanClassLoaderAware
(3)、BeanFactoryAware

BeanPostProcessor方式Aware接口
(1)、ResourceLoaderAware
(2)、ApplicationEventPublisherAware
(3)、MessageSourceAware
(4)、ApplicationContextAware

7、BeanPostProcessor通常会处理容器内所有符合条件的BeanDefinition实例化后的对象实例。

   ApplicationContext会自动检测在配置文件中实现了BeanPostProcessor接口的所有bean。并把他们注册为后置处理器,然后在容器创建bean的适当时候调用它。因此部署一个后置处理器同部署其他bean并没有什么区别

相关文章: