Spring 配置 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"
       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-beansspring-context 架构在这两个示例中是不同的。

所以,我的问题是,你会使用哪种风格,为什么?特别是,版本化模式是否会在未来变得不可用,非版本化模式是否会在 Spring 更新模式时保持与当前应用程序的兼容性?

一个附带的问题是,我在哪里可以找到版本化的 spring 模式列表?

原文由 JBT 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 374
2 个回答

建议使用“无版本”XSD,因为它们映射到您在应用程序中使用的框架的当前版本。

应用程序和工具永远不应尝试从 Web 获取这些 XSD ,因为这些模式包含在 JAR 中。如果出现这种情况,通常意味着您的应用正在尝试使用比您正在使用的框架版本更新的 XSD,或者您的 IDE/工具未正确配置。

据我所知,只有一种情况下您想要使用特定的 XSD 版本:当尝试使用在较新版本中已被弃用/修改的 XML 属性时。至少可以说,这种情况并不经常发生。

无论如何,Spring 团队应该放弃 Spring 5.0 的版本化模式,请参阅 SPR-13499

有关“无版本 == 当前版本”的更多信息:

这些 XSD 文件包含在 Spring JAR 中——“无版本”XSD 在构建期间映射到最新版本(请参阅实际建立该链接的 spring.schemas 文件)。此外,在线可用文件的构建方式相同(请参阅 gradle build 中的“schemaZip”目标)。

原文由 Brian Clozel 发布,翻译遵循 CC BY-SA 3.0 许可协议

我不确定它们是否是一个指南,但我个人的偏好是参考非版本化模式——一般来说,如果你正在处理更新版本的 Spring 项目(Spring 核心、集成等),那么你可以参考未版本化的模式。

未版本化的模式指向项目的最新版本,因此如果您使用的是真正旧版本的 Spring(比如 2.5 版本与当前发布的 4.0 版本),它们可能不是正确的语法,在这种情况下可能更好指向版本化模式。

这里要说明的另一点是,如果可能,最好完全避免使用 xml,并使用 基于 Java 的 @Configuration 样式来配置 Spring bean。

原文由 Biju Kunjummen 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题