Spring 基于XML解析生成BeanDifinition

1:概述

我们都知道Spring容器管理着各种实例化对象,为保证实体化对象生成的统一性、规则性,抽象出统一的bean定义是必要的,所以在对象实例化之前,需要将bean的定义属性统一封装成BeanDifination对象作为Bean实例化的基石和桥梁。BeanDifination封装的来源有基于XML的,有基于注解的,BeanDifinition也会进步一的抽象和自定义,分门别类的完成对各种来源的配置方式的需求。

Spring容器加载方式主要有四种:

  • 类路径获取配置文件(ClassPathXmlApplicationContext)
  • 文件系统路径获取配置文件绝对路径(FileSystemXmlApplicationContext)
  • 注解配置加载容器(AnnotationConfigApplicationContext)
  • Springboot加载容器(EmbeddWebApplictionContext):3:ClassPathXmlApplicationContext加载

本文主要解析基于XML配置方式完成BeanDifination对象的封装过程。

2:Xml 属性配置的解析过程

2.1 解析入口obtainFreshBeanFactory()
        创建BeanFactory
        xml解析
        BeanDefination对象的封装

2.2 代码梳理

        类关系图:方便对模板模式下的父类引用进行准确的定位

   

         访问入口:

        

        refreshBeanFactory()

         加载BeanDefinitions

        

         从xml中加载BeanDifinition

        

         BeanDefinitionHolder这里涉及到装饰器模式,丰富封装的BeanDefiniation对象。

对于生成好的BeanDefinitionHolder如何进行缓存并且实例化成对象,参见bean实例化流程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值