Spring 容器从加载文件到创建一个完整Bean的工作流程

1、ResourceLoader从存储介质中加载Spring配置文件,并使用Resource表示这些配置文件的资源;

2、BeanDefinitionReader读取 Resource所指向的配置文件资源,然后解析配置文件。把配置文件中的每一个

<bean>解析成一个BeanDefinition对象,并存于BeanDefinitionRegistry中;

3、Spring容器会自动扫描BeanDefinitionRegistry中的BeanDefinition对象,利用Java反射机制识别出其中的

Bean工厂后处理器(即:实现BeanFactoryPostProcessor接口的Bean),然后调用这些Bean工厂后

处理器对BeanDefinitionRegistry中的BeanDefinition进行加工处理。主要完成以下两项加工操作:

(1)对使用到占位符的<bean>元素标签进行解析,得到最终配置项,这意味着对一些“半成品”的BeanDefinition

    对象进行加工处理并得到了成品的Beandefinition;

   (Ps:占位符使用与将XML中的某些需要动态设置的值,替换为占位键的值,增加了程序的灵活性,

通常Spring框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将

.properties(key/value形式)文件中一些动态设定的值(value),在XML中替换为占位该键($key$)的值,

.properties文件可以根据用户需求,自定义一些相关的属性参数

    classpath:/......是引用src目录下文件的写法)

(2)对BeanDefinitionRegistry中的BeanDefinition进行扫描,通过Java反射机制找出所有属性编辑器Bean(即:

    实现Java.beans.PropertyEditor接口的Bean),并自动将它们注册到Spring容器的(PropertyEditorRegistry)

    属性编辑器注册表中。

4、Spring容器从BeanDefinitionRegistry中取出加工后的BeanDefinition,并调用instantiationStrategy进行Bean的

实例化操作;

5、在instantiationStrategy实例化Bean的过程中,Spring容器用BeanWrapper对Bean进行封装,BeanWrapper提供

了许多通过Java反射机制来操作Bean的方法,它将结合该Bean的BeanDefinition以及容器中的PropertyEditorRegistry

属性编辑器,完成Bean属性的设置工作;

6、利用Spring容器中注册的Bean后处理器(实现BeanPostProcessor接口的Bean),对已经完成属性设置的Bean进行

后续加工,直接装配出一个准备就绪的Bean。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值