当前位置: 首页 > 面试题库 >

Spring配置XML模式:有没有版本?

郏兴贤
2023-03-14
问题内容

我是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更新架构时,非版本化的架构会与当前应用程序保持兼容吗?

另一个问题是,在哪里可以找到版本化的弹簧模式列表?

非常感谢!


问题答案:

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

应用程序和工具切勿尝试从Web上获取那些XSD,因为JAR中包含了这些模式。如果这样做,通常意味着你的应用正在尝试使用比你使用的框架版本更新的XSD,或者你的IDE /工具配置不正确。

据我所知,只有一种情况需要使用特定的XSD版本:当尝试使用在较新版本中已过时/修改的XML属性时。至少可以这样说,这通常不会发生。

无论如何,Spring团队应该删除Spring 5.0的版本化架构,请参阅SPR-13499。

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

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



 类似资料:
  • 我是新来的Spring。让我困惑的一件事是,有时我看到带有版本化模式的XML配置文件,但有时带有非版本化模式。例如,有时候我看到一些像 有时是这样的: 请注意,在这两个示例中,和模式是不同的。 所以,我的问题是,你会使用哪种风格,为什么?特别是,版本化模式将来会变得不可用吗?当Spring更新模式时,非版本化模式会与当前应用程序保持兼容吗? 一个附带的问题是,我在哪里可以找到版本化的spring模

  • 也许,我搜索了所有的互联网,但我一定错过了什么。 我根据文档配置Log4j2和Commons日志。我添加了,但其配置对应用程序输出没有影响。我看Log4j没有读这个文件。这是我的配置: pom.xml \src\main\资源\log4j2.xml 在任何类中-例如A类 应用程序具有函数,因此可以由IDE或mvn exec:java运行。 问题: 日志记录正在工作-但使用默认方式。 正如您在文件中

  • 我使用<code>Ehcache 2作为Spring引导。这是我的配置: 现在我想使用<code>Ehcache 3 spring boot 1)为什么几乎所有的例子都是基于xml?这怎么可能比java config好? 2) 如何在不使用 xml 的情况下在 spring boot 中使用 java 配置 Ehcache 3?

  • 问题内容: 我是Spring的新手。让我感到困惑的是,有时我看到带有版本化模式的XML配置文件,而有时却看到非版本化模式的XML配置文件。例如,有时我看到类似 有时像这样: 请注意,两个示例中的和模式是不同的。 所以,我的问题是,你将使用哪种样式以及为什么使用?特别是,将来版本更新的架构会不可用,并且当Spring更新架构时,非版本化的架构会与当前应用程序保持兼容吗? 另一个问题是,在哪里可以找到

  • 我有一个基于Spring框架的项目,它只基于Java配置进行初始化。这意味着不需要使用web.xml文件。 您可以在下面的图像中看到项目的结构: Java 7 Spring framework 4.2.1.发布 HibernateORM 5.0.4.final Spring Tool Suite IDE 3.6.2 Maven3 Tomcat 7 数据源 而SystemSettings保存数据库的

  • 我是spring+MVC的新手。我找到了一个脚本,我可以运行这个脚本的一部分。这个脚本配置spring mvc没有xml,在Java方面.我将所有的jar放入web-inf/lib。 控制器配置.Java WebAppInitializer.java HomeController.java FilmController.java film.java 我有两个问题: 如果我写“http://loca