我是春天的新手。让我感到困惑的一件事是,有时我会看到带有版本化模式的 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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:annotation-config/>
<context:component-scan base-package="base.package"/>
</beans>
有时像这样:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<context:annotation-config/>
<context:component-scan base-package="base.package"/>
</beans>
请注意, spring-beans
和 spring-context
架构在这两个示例中是不同的。
所以,我的问题是,你会使用哪种风格,为什么?特别是,版本化模式是否会在未来变得不可用,非版本化模式是否会在 Spring 更新模式时保持与当前应用程序的兼容性?
一个附带的问题是,我在哪里可以找到版本化的 spring 模式列表?
原文由 JBT 发布,翻译遵循 CC BY-SA 4.0 许可协议
建议使用“无版本”XSD,因为它们映射到您在应用程序中使用的框架的当前版本。
应用程序和工具永远不应尝试从 Web 获取这些 XSD ,因为这些模式包含在 JAR 中。如果出现这种情况,通常意味着您的应用正在尝试使用比您正在使用的框架版本更新的 XSD,或者您的 IDE/工具未正确配置。
据我所知,只有一种情况下您想要使用特定的 XSD 版本:当尝试使用在较新版本中已被弃用/修改的 XML 属性时。至少可以说,这种情况并不经常发生。
无论如何,Spring 团队应该放弃 Spring 5.0 的版本化模式,请参阅 SPR-13499 。
有关“无版本 == 当前版本”的更多信息:
这些 XSD 文件包含在 Spring JAR 中——“无版本”XSD 在构建期间映射到最新版本(请参阅实际建立该链接的 spring.schemas 文件)。此外,在线可用文件的构建方式相同(请参阅 gradle build 中的“schemaZip”目标)。