spring IoC学习 ------IoC容器:BeanFactory

  IoC容器:

     IoC容器会以某种方式加载Configuration metadata(通常是xml格式的配置信息),然后根据这些信息绑定整个系统的对象,最后总组装成一个可用的机遇轻量级容器的应用系统。

  IoC启动过程:分为两个阶段,一个是容器启动阶段,另外一个是Bean实例化阶段

   容器启动阶段:加载配置 -----》 分析配置信息 -----》装备到BeanDefinition -----》其他后处理(PostProcessor)

   Bean实例化阶段:实例化阶段 -----》装配阶段 -----》 生命周期回调 ------》 对象其他处理 -----》 注册回调接口

  1. 容器启动阶段:启动时,首先通过某种途径加载,一段依赖某种工具类(Bean Definition Reader) 对加载的配置进行解析和分析,并将分析后的信息编组为相应的BeanDefinition,最后把这些保存了bean定义必要信息的BeanDefinition。注册到相应的BeanDefinitionRegister。
  2. Bean实例化阶段:当某个请求方通过容器的getBean方面明确地请求某个对象,就会触发这个阶端。首先检查所请求的对象是否初始化,如果没有则会根据注册的BeanDefinition所提供的信息实例化被请求对象,并为其注册依赖。

  干预容器的初始化:

    spring提供了一种叫做BeanFactoryPostProcessor的容器扩展机制,在容器启动的第一个阶段增加一个工序。让我们对BeanDefinition做一些额外的操作。比如修改其中的Bean中定义的属性,为Bean定义增加其他信息等。

    要自定义BeanFactoryPostProcessor。要实现BeanFactoryProcessor接口,若一个容器中实现了多个BeanFactoryPostProcessor,则还需要实现Ordered接口以指定顺序。

    spring已经提供了ProperyPlaceholderConfigurer,PropertyOverrideConfigurer这两个实现类。

    properyPlaceholderConfigurer:加载来自properties的信息

    propertyOverrideConfigurer:用来自properties覆盖原来在xml中的配置信息。

    CustomEditorConfigurer。

  spring内部通过JavaBean的property Editor来帮助进行String 类型的其他类型的转换工作

  指定propertyEditor:可以通过继承PropertyEditorSupport

  容器Bean实例化阶段:

    getBean方法第一次被调用时,Bean实例化阶段的活动才会做触发。第二次调用则会直接房峰辉容器缓存的第一次实例化完的对象,若发现未被实例化,则哦能够过createBean()方法来进行对象实例化、

    实例化过程:

      实例化bean对象 ----->设置对象属性 -----> 检查Aware相关接口并设置相关依赖----->BeanPostProcess前置处理,检查是否是InitializingBean以决定是否调用afterPropertiesSet方法----->检查是否配置有自定义的init-method  -----> BeanPostProcessor 后置处理 -----> 注册必要的Destruction相关回调接口 -----> 使用 -----> 是否实现DisposableBean -----> 是否配置有自定义的destory方法

 

转载于:https://www.cnblogs.com/Qbright/archive/2012/07/18/2595730.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值