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
spring 中<bean>的id 和name 的區分