Spring Bean id,名字有什么不同吗?名称acttribute中可以包含哪些特殊字符?

时间:2015-11-29 13:48:50

标签: java spring

Spring文档说id属性允许您指定一个id。通常,这些名称是字母数字(' myBean',' fooService'等),但也可能包含特殊字符。我想知道哪些特殊字符可以包含该属性。感谢。

2 个答案:

答案 0 :(得分:0)

Just read the docs thoroughly:

  

但是,XML规范确实限制了字符   在XML ids中合法。这通常不是约束,但如果您需要   使用这些特殊的XML字符之一,或者想要介绍其他   bean的别名,你也可以在name属性中指定它们,   用逗号(,),分号(;)或空格分隔。

所以基本上你可以使用几乎任何字符,只要它是html entity,但如果你这样做,你应该提供别名。

另请参阅有关XML属性值的其他信息:
http://www.w3schools.com/xml/xml_attributes.asp

答案 1 :(得分:0)

spring beans schema中,您可以发现该名称为xsd:string且ID为xsd:id。 xsd:id数据类型限制引用xsd:NCNameXML NCName,另请参阅here

name属性是一个xs:string,因此它可以包含任何有效xml字符的字符,空格保留原样。

  

字符串的值空间是一组零个或多个字符的有限长度序列(如[XML]中所定义),它们匹配来自[XML]的字符集。

因此,Spring Beans name属性中允许的字符应该是Char production from the XML spec

的字符

xsd:id也是一个xsd:string,但也是一个xsd:token,因此空格是折叠的,也是一个xsd:Name,一个xsd:NCName,所以跟在XML NCName rules

之后
  

NCName :: = NCNameStartChar NCNameChar * / *一个XML名称,减去“:”* /

Spring Beans的id属性或类型为xsd:id的任何属性都有空格折叠且必须:

  1. 仅以NCNameStartChar
  2. 开头
  3. 仅包含NCNameChar