5

学习Spring我在spring配置文件中发现了两种xmlns的定义。一个从这个开始:

 <beans xmlns="http://www.springframework.org/schema/beans"

我在春季文档中找到的

另一个从这个开始:

 <beans:beans  xmlns="http://www.springframework.org/schema/mvc"

两者都工作正常。我观察到的一个区别是,如果您使用第二个定义,则必须以名称 beans 开始所有标签,如下所示:

<beans:import resource="hibernate-context.xml" /> 

否则可以写成

 <import resource="hibernate-context.xml" />

它们有什么主要区别?

4

1 回答 1

6

这不是 Spring 特有的,而是更多关于 XML 和命名空间的 - 参考在这里:http://www.w3schools.com/xml/xml_namespaces.asphttp://en.wikipedia.org/wiki/XML_namespace

总结一下:首先

<beans xmlns="http://www.springframework.org/schema/beans"

使 beans 模式成为这个 xml 文件的默认值,这将允许在没有命名空间前缀的情况下引用这个 beans 模式中的元素。那么这个模式在哪里定义 - 对模式的引用通常包含在 schemaLocations 属性中,如下所示 -

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" 

上面说的是http://www.springframework.org/schema/beans的定义存在于对应的 .xsd 文件中

在你的第二个例子中 -

<beans:beans  xmlns="http://www.springframework.org/schema/mvc" xmlns:beans="http://www.springframework.org/schema/beans"

您现在将 mvc 命名空间定义为默认命名空间,因此在这种情况下,可以在没有任何前缀的情况下引用 mvc 架构中的任何元素,但是如果您想引用 beans 架构中的任何元素,则必须引用它使用示例中的beans:前缀beans:import

于 2012-07-23T11:42:09.937 回答