[英]What is mean by <beans:beans> and <beans>
之间有什么区别
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
和
<beans:beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
您能解释一下两者之间的区别吗?
这是一个XML名称空间,用于分隔可能冲突的元素名称,因此没有真正的区别。
它们是等效的。 您可以说元素的全名是ns:elementName例如:
http://www.springframework.org/schema/beans : beans
如果您说xmlns =“ http://www.springframework.org/schema/beans” ,则表示“如果您看到没有名称空间前缀的元素,则假定默认名称空间为” http://www.springframework.org/模式/ beans
如果您说xmlns:beans =“ http://www.springframework.org/schema/beans” ,则表示“如果您看到带有bean:前缀的元素,请假定它是” http://www.springframework的简写。 org / schema / beans “
理解这一点的关键是xmlns
值。 在两种情况下都是:
xmlns="http://www.springframework.org/schema/beans"
这指定了文档的默认架构。 这意味着XML中的每个标记都应该是该架构的一部分, 除非明确指定它属于哪个其他架构。
通常,通过<schemaName:tagName>
模式指定标签来自另一个架构。 因此,例如,如果标记name
是架构foo
一部分,则必须将其与<foo:name>
。
为文档选择默认架构时,可以跳过架构名称,就像您使用<beans>
示例一样。 在这种情况下,必须在模式中使用xmlns
指向<beans>
标签。
在另一种情况下,您明确指定了标记beans
是带有别名beans
的架构的一部分,该别名beans
导致<beans:beans>
。 但是,如果没有xmlns:beans=http://www.springframework.org/schema/beans
定义,则会导致XML无效。
就个人而言,尽管如此,我还是希望始终明确提供架构别名。
第一个是正确的,第二个不是。 不同之处在于您的“默认名称空间”。 您的默认名称空间是beans
。 如果您的默认名称空间是其他名称空间(例如context
,那么您需要显式定义一个beans
名称空间(在示例中尚未完成)并使用beans:beans
样式。
有不同的使用情况进行嵌套<beans>
,你用一个新元素<beans>
根标记内<beans>
标签:
为了定义具有某些默认值的Bean子集或仅当某些配置文件处于活动状态时才进行注册的目的。 任何此类嵌套元素都必须声明为文档中的最后一个元素。
但是您的示例与此无关。
简而言之,它不允许您在选择的属于默认名称空间的元素之前添加名称空间。 xmlns =“ namespace”,如果上述示例来自:i)xmlns =“ http://www.springframework.org/schema/beans”
然后,您可以使用元素<beans>以及<beans:beans>-显式语法。
ii)xmlns =“ http://www.springframework.org/schema/p”
然后,您可以使用<p>以及<xmlns:p>-显式语法。
注意:您只能使用xmlns设置默认名称空间!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.