读书人

spring的bean的id跟name属性

发布时间: 2012-06-29 15:48:47 作者: rapoo

spring的bean的id和name属性
1.id属性命名必须满足xml命名规范,因为id其实是xml中就做了规范。总结起来相当于java的命名规范,不能以数字,符号大头不能有空格,如123,?ad,"ab "等都是不规范的,Spring在初始化时就会报错,诸如:


Java代码




1. org.xml.sax.SAXParseException: Attribute value "?ab" of type ID must be a name.




org.xml.sax.SAXParseException: Attribute value "?ab" of type ID must be a name.

2.name属性没有以上规定,但是在getBean()会报错


Java代码




1. org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'a b' is defined




org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'a b' is defined


3。配置文件不允许出现两个id相同的<bean>,否则初始化时会报错

4.name属性可以但是getBean得到的是后一个实例

5.name属性可以用,隔开多个名字

6.如果name,id都没指定,那么用类全名作为name

7.如果存在多个id和name都没有指定,且实例类都一样的<bean>,如:


Java代码




1. <bean class="com.stamen.BeanLifeCycleImpl"/>

2. <bean class="com.stamen.BeanLifeCycleImpl"/>

3. <bean class="com.stamen.BeanLifeCycleImpl"/>




<bean class="com.stamen.BeanLifeCycleImpl"/>

<bean class="com.stamen.BeanLifeCycleImpl"/>

<bean class="com.stamen.BeanLifeCycleImpl"/>




则第一个bean通过getBean("com.stamen.BeanLifeCycleImpl")获得,

第二个bean通过getBean("com.stamen.BeanLifeCycleImpl#1")获得,

第三个bean通过getBean("com.stamen.BeanLifeCycleImpl#2")获得,以此类推。

小结:

当然这些都是奇迹淫巧,不足以去时间,通过id指定唯一名称才是王道

读书人网 >开源软件

热点推荐