在BeanFactory的配置中,<bean>是我们最常见的配置项,它有两个最常见的属性,即id和name,最近研究了一下,发现这两个属性还挺好玩的,特整理出来和大家一起分享。
1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab "等都是不规范的,Spring在初始化时就会报错,诸如:
org.xml.sax.SAXParseException: Attribute value "?ab" of type ID must be a name.
2.name属性则没有这些限定,你可以使用几乎任何的名称,如?ab,123等,但不能带空格,如"a b"," abc",,这时,虽然初始化时不会报错,但在getBean()则会报出诸如以下的错误:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'a b' is defined
3.配置文件中不允许出现两个id相同的<bean>,否则在初始化时即会报错,如:
org.xml.sax.SAXParseException: Attribute value "aa" of type ID must be unique within the document.
4.但配置文件中允许出现两个name相同的<bean>,在用getBean()返回实例时,后面一个Bean被返回,应该是前面那个<bean>被后面同名的 <bean>覆盖了。有鉴于此,为了避免不经意的同名覆盖的现象,尽量用id属性而不要用name属性。
5.name属性可以用,隔开指定多个名字,如<bean name="b1,b2,b3">,相当于多个别名,这时通过getBean("a1") getBean("a2") getBean("a3")返回的都是同一个实例(假设是singleton的情况)
6.如果id和name都没有指定,则用类全名作为name,如<bean class="com.stamen.BeanLifeCycleImpl">,则你可以通过
getBean("com.stamen.BeanLifeCycleImpl")返回该实例。
7.如果存在多个id和name都没有指定,且实例类都一样的<bean>,如:
<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指定唯一名称才是阳光大道,其他仅作为一笑而过的见闻罢了。
分享到:
相关推荐
车联网不要花拳绣腿.pdf
00266 培训师--慧眼识珠--看穿培训师的花拳绣腿!.doc
虽说是实例书籍,但它明显高于同类书籍,每个实例都涵盖了多个技术要点,而且实例注重于实际应用,简单对象的应用,图形图像、多媒体、数据库的处理,最后还讲解了综合应用实例开发,而不像有的实例图书,花拳绣腿,...
sed原理、机制探究,适合sed深入。...sed修炼系列(一):花拳绣腿之入门篇 sed修炼系列(二):武功心法(info sed翻译+注解) sed修炼系列(三):sed高级应用之实现窗口滑动技术 sed修炼系列(四):sed中的疑难杂症
那就开始让我们真正把它的功能给实现起来吧,外强中干,花拳绣腿可不行哦,我们需要真正的本领,需要一颗自强不息的心哦,常常想想自己的梦想什么,这样才不会迷失自己,才会在茫茫的世界中找到自己前进的方向!...
测试的各种理论知识就像武功中的内功心法,各种测试技巧和测试工具则像招式和兵器,如果忽略了内功心法的修炼,即使招式和兵器熟练使用,也可能只是花拳绣腿,没有很强的杀伤力。 对待测试理论的辨证态度 ...
”铁指”乃是硬功夫,真功夫,绝非”花拳绣腿”。 ”寸进”指看得见摸得着,可测量可预期,实打实的进益,一寸一寸,力无虚发,如此则功不唐捐,在扎实可见的成果的即时反馈之中,耐心信心必然也与日俱增。所谓”零...
因为没有内功,没有内功的招式只是花拳绣腿而已,至于内功何来?通过电影、海报以及电视传媒,使我们对“蝙蝠侠”、“超人”、“蜘蛛侠”以及“钢铁侠”再熟悉不过了。设计师在使用这些共同经历的记忆碎片时,能够和...
在人与人交流的方式当中,语言交流是最为初级的,如果懂,一个眼神足以。设计亦如此。...仅仅在视觉上下足功夫是不够的,那是花拳绣腿,不足以去吸引大众。先理解用户再考虑合适的设计,这是首要的。也就
在人与人交流的方式当中,语言交流是最为初级的,如果懂,一个眼神足以。设计亦如此。...仅仅在视觉上下足功夫是不够的,那是花拳绣腿,不足以去吸引大众。先理解用户再考虑合适的设计,这是首要的。也就