2、id命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,”ab “等都是不规范的,Spring在初始化时就会报错,诸如: org.xml.sax.SAXParseException: Attribute value ”?ab” of type ID must be a name.
3、name属性则没有这些限定,你可以使用几乎任何的名称,如?ab,123等,但不能带空格,如”a b”,” abc”,,这时,虽然初始化时不会报错,但在getBean()则会报出诸如以下的错误: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ’a b’ is defined
4、在spring同一个上下文中id,name只能有一个,但是同一个id可以用多个别名,比如<bean id=”a” name=”a1,a2,a3″ class=”com.shaxiaozi.A”/>,a1,a2,a3指向的是同一个对象[前提是单例的情况下]。如果不是单例则创建了和name数量相等的bean实体。 两个id相同的<bean>,否则在初始化时即会报错,如: org.xml.sax.SAXParseException: Attribute value ”aa” of type ID must be unique within the document.