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
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并没有什么区别