spring源码解读(一) —— xml头文件的作用

Spring的核心功能之一就是IOC,也就是一个容器管理功能,那么我们怎么将我们定义的bean注入的Spring容器中,spring中,提供了xml文档,我们将我们的bean定义在xml中,spring中就可以管理我们的对应,xml定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="myTestBean" class="com.study.MyTestBean">
    </bean>
</beans>

今天我们先不看bean,而是关注在为什么我们的xml中的头文件,为什么要怎么定义,它到底有何作用。

一、DTD和XSD

DTD(Document Type Definition):文档类型定义,是一种xml约束模式语言,是xml文件验证机制,属于xml文件组成的一部分。简单说,DTD可以帮助我们验证我们的xml是否是按照要求来写的。

一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。在主要在mapper的生命中使用这中格式,格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

XSD(XML Schemas Definition):和DTD类似,描述了xml文档的结构,可以用来验证xml是否是正确格式。其格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd>

其主要包含名称空间及(xmlns="http://www.springframework.org/schema/beans");还包括对应的xsd所存储的位置信息,其中位置信息包含两部分,一是名称空间的URI,另一部分就是该名称空间所标识的文件位置或URL地址(xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd).

二、spring源码导读。

从上面的描述我们知道不管是DTD,还是XSD其实最主要的功能就是帮助我们验证XML文件的正确性,下面让我们跟进源码去看一下,是如何帮助我们验证的,以XSD为例:

示例代码如下:

public static void main(String[] args) {
        XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("beanFactory.xml"));
        MyTestBean bean = (MyTestBean)bf.getBean("myTestBean");
        System.out.println(bean.getTestStr());
    }

其中getValidationModeForResource这个方法就是验证我们的xml文件是否是符合书写要求的,进入方法可以看到:

这里主要是判断是手动验证还是自动验证,因为我们这里并没有进行手动设置所以是走到了自动验证逻辑中,再次进入自动验证的代码,如下:

 这里主要就是验证我们的xml是DTD,还是XSD,DTD返回2,XSD返回3,那么spring中是怎么进行判断的其实就是根据hasDocType这个方法,来判断的,主要xml文件中包含DOCTYPE,就是DTD格式,不包含就是XSD

所以spring就会根据我们定义的xml文件类型,来加载对应的xml文件,具体的加载内容,我们下篇文章继续讲解。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值