Spring如何从类路径中找到XSD文件

时间:2015-08-10 18:34:33

标签: java xml spring xsd

在我们的spring配置中,我们将beans标记放在这样:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

现在Spring必须从我的calsspath中找到文件spring-beans.xsd&amp;的位置。 spring-context.xsd

我在这条路径上找到了一些xsd文件:

  

弹簧上下文4.1.5.RELEASE.jar /组织/ springframework的/上下文/配置

spring-context-2.5.xsd
spring-context-3.0.xsd
spring-context-3.1.xsd
spring-context-3.2.xsd
spring-context-4.0.xsd
spring-context-4.1.xsd

在搜索spring-beans.xsd文件时,我在此路径中找到了一些文件:

  

弹簧豆-4.1.5.RELEASE.jar /组织/ springframework的/豆类/工厂/ XML

spring-beans-2.5.xsd
spring-beans-3.0.xsd
spring-beans-3.1.xsd
spring-beans-3.2.xsd
spring-beans-4.0.xsd
spring-beans-4.1.xsd

spring如何知道查找此文件的位置,因为beans标记中的架构位置与此文件的实际位置之间没有链接。此外,我能够找到类似spring-beans-<version>.xsd的文件,然后即使我们未在spring-beans.xsd标记中指定任何版本,春天也会知道<beans>是什么。

1 个答案:

答案 0 :(得分:10)

某些弹簧库包含一些文件,如META-INF/spring.schemas

  

名为“spring.schemas”的属性文件包含XML的映射   模式位置(与XML中的模式声明一起引用)   将模式用作'xsi:schemaLocation'的一部分的文件   属性)到classpath资源。需要此文件来防止   Spring绝对不得不使用默认的EntityResolver   需要Internet访问才能检索模式文件。如果你指定   在这个属性文件中的映射,Spring将搜索模式   在类路径上

<强> e.g。

spring-beans-x.x.x-RELEASE.jar的spring.schemas

http\://www.springframework.org/schema/beans/spring-beans-2.0.xsd=org/springframework/beans/factory/xml/spring-beans-2.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-2.5.xsd=org/springframework/beans/factory/xml/spring-beans-2.5.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.1.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.2.xsd=org/springframework/beans/factory/xml/spring-beans-3.2.xsd
http\://www.springframework.org/schema/beans/spring-beans.xsd=org/springframework/beans/factory/xml/spring-beans-3.2.xsd

简而言之,上面的属性允许它将XSD资源映射到schemaLocation属性。