Spring源码解析——1、容器的基本实现

Spring的结构构成

1、Spring中最核心的两个类:

    DefaultListAbleBeanFacory:是Spring注册及加载bean的默认实现
    XmlBeanDefinitionReader:整个XML文件读取的大致流程

2、容器的基础XmlBeanFactory

2.1 配置文件封装

Spring的配置文件读取是通过ClassPathResource进行封装的,this.reader.loadBeanDefinitions(resources)是资源加载的真正实现

2.2 加载bean

封装资源文件。当进入XmlBeanDefinitionReader后首先对参数Resource使用EncodedResource进行封装
获取输入流。从Resource中获取对应的InputStream并构造InputSource
Spring用来检测验证模式的办法就是判断是否包含DOCTYPE,如果包含就是DTD,不包含就是XSD

3、获取Document

经过验证模式准备的步骤就可以进行Document加载了,通过类DefaultDocumentLoader执行

3.1 EntityResolver的用法

如果SAX应用程序需要自定义处理外部实体,则必须实现此接口并使用setEntityResolver方法向SAX驱动器注册一个实例。

4、解析及注册BeanDefintions

doRegisterBeanDefinitions真正地开始解析XML

 模板方法模式:一个类要么是面向继承的设计的,要么就用final修饰,在 DefaultBeanDefinitionDocumentReader中并没有用final修饰,所以它是面向继承设计的。preProcessXml、postProcessXml这两个方法代码是空的,正是为子类设计的。

4.1 profile属性的用法

首先程序会获取beans节点是否定义了profile属性,如果定义了则去环境变量中去寻找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值