码迷,mamicode.com
首页 > 编程语言 > 详细

spring bean id和bean name的区别

时间:2015-08-04 15:13:00      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

原文:http://selppay-gmail-com.iteye.com/blog/763263

1. Spring bean defination

一般情况下,我们定义和应用bean都使用bean id,但是今天我遇到了这样的定义

Xml代码  技术分享
  1. <bean id = "writeService" class = "aServiceImp, bServiceImp, cServiceImp"  
  2.            name = "aService, bService, cService"  init-method = "init">  
  3.            <property name = "interfaceName">  
  4.                      <value>baseService></value>  
  5.            </property>  
  6.            ............  
  7. </bean>  

 

这样的定义首先表明aService, bService, cService都implements interface baseService

用spring IOC注入的时候,既可以用id writeService,也可以用name aService/bService/cService

 

bean id 和 bean name到底有什么区别呢?

Google和百度都找不到我想要的答案,最后还是在spring的官网上找到了如下的解释,我自己理解为:bean name的定义是合法的,但是一个bean name不能唯一的代表一个bean,也就是多个bean可以拥有相同的bean name,但是bean id是唯一标示一个bean的,所以我们应该尽量避免用bean name来引用bean。

 

原文解释:

For a fallback match, the bean name is considered as a default qualifier value. This means that the bean may be defined with an id "main" instead of the nested qualifier element, leading to the same matching result. However, note that while this can be used to refer to specific beans by name, @Autowired  is fundamentally about type-driven injection with optional semantic qualifiers. This means that qualifier values, even when using the bean name fallback, always have narrowing semantics within the set of type matches; they do not semantically express a reference to a unique bean id. Good qualifier values would be "main" or "EMEA" or "persistent", expressing characteristics of a specific component - independent from the bean id (which may be auto-generated in case of an anonymous bean definition like the one above). 

spring bean id和bean name的区别

标签:

原文地址:http://www.cnblogs.com/langtianya/p/4701806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!