zoukankan      html  css  js  c++  java
  • spring 中<bean>的id 和name 的区分

    1. id 和name 属性作用上一样,推荐使用id;

    2. id取值要求严格些,必须满足XML的命名规范。id是唯一的,配置文件中不允许出现两个id相同的<bean>。

    3. name取值比较随意,甚至可以用数字开头。在配置文件中允许出现两个name相同的<bean>,在用getBean()返回实例时,后面一个Bean被返回。

    4. 如果没有id,name,则用类的全名作为name,如<bean class="test.Test">,可以使用getBean("test.Test")返回该实例。

    5. id的时候用分号(“;”)、空格(“ ”)或逗号(“,”)分隔开就只能当成一个标识,name的时候用分号(“;”)、空格(“ ”)或逗号(“,”)

    分隔开就要当成分开来的多个标识(相当于别名 alias 的作用)。

    如:

    name=“1 2 3 4”等同于 name=“1,2,3,4” 这样写相当于有 1 2 3 4(4个)个标识符标识当前bean

    id=“1 2 3 4” 这样写相当于有 “1 2 3 4”(1个)个标识符标识当前bean

    6. 如果既配置了 id ,也配置了 name ,则两个都生效。

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

    代码

    <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”)获得,以此类推。

    8.注解和配置文件都存在的时候

    如果配置基本类的时候,注解和配置文件都使用的时候,注解和配置文件中 name 不相同的时候, 则两个不冲突,都能够生效。

    如果配置基本类的时候,注解和配置文件都使用的时候,注解和配置文件中 name 相同的时候, 则两个冲突,配置文件生效。

    如果类作为引用类的时候,并且自动注入的时候,注解和配置文件都配置的时候,如果 name 相同的话,配置文件生效。

    如果类作为引用类的时候,并且自动注入的时候,注解和配置文件都配置的时候,如果 name 不相同的话,就按照  Autowired的匹配规则去匹配。

    备注: Autowired的匹配规则 1.ByType 2. ByName

    参考: 

    http://blog.csdn.net/qq_22063697/article/details/51912386

    http://www.cnblogs.com/flying607/p/5132293.html

  • 相关阅读:
    【前缀和】【分类讨论】hdu5163 Taking Bus
    【DFS】bzoj2079 [Poi2010]Guilds
    【贪心】bzoj3850 ZCC Loves Codefires
    【分类讨论】bzoj3856 Monster
    【莫队算法】【权值分块】bzoj2223 [Coci 2009]PATULJCI
    【枚举】bzoj1709 [Usaco2007 Oct]Super Paintball超级弹珠
    【矩阵哈希】【二分答案】【哈希表】bzoj1567 [JSOI2008]Blue Mary的战役地图
    【矩阵哈希】【哈希表】bzoj2351 [BeiJing2011]Matrix
    【哈希表】CODEVS1230 元素查找
    【二分答案】【哈希表】【字符串哈希】bzoj2946 [Poi2000]公共串
  • 原文地址:https://www.cnblogs.com/alisonGavin/p/6870169.html
Copyright © 2011-2022 走看看