spring bean中的id与name的区别

spring 中的id 和name 的区分

1. id 和name 属性作用上一样,推荐使用id;
  1. id取值要求严格些,必须满足XML的命名规范。id是唯一的,配置文件中不允许出现两个id相同的。
  2. name取值比较随意,甚至可以用数字开头。在配置文件中允许出现两个name相同的,在用getBean()返回实例时,后面一个Bean被返回。
  3. 如果没有id,name,则用类的全名作为name,如,可以使用getBean(“test.Test”)返回该实例。
  4. 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
  5. 如果既配置了 id ,也配置了 name ,则两个都生效。
  6. 如果存在多个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

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值