Spring bean的命名慣例和java變數相同,以英文字母小寫開頭的lower camelcase的寫法。

例如'userName','empolyeeId','carSize'。

 

bean只能有一個id(識別符號identifier),但可以有多個名稱,用bean的name屬性來定義。

無論是每個bean的id或是name都必須是唯一,也就是bean的名稱必須彼此不同,才不會造成衝突。

 

bean的多個命名範例

Beans.xml

...

在第7行定義bean的id為"helloWorld",name為"hello"

 

HelloWorld.java

...

 

MainApp.java

...

第11行所要取得的實例是"helloWorld"這個bean,由於在Beans.xml第7行id為"helloWord",因此可以正常地印出結果。

但若將地11行getBean()方法的引數改為"hello",也一樣可以取得bean實例,因為在Beans.xml中第7行的bean也定義了name等於"hello"。

特別的是,bean的name可以有多個,彼此用逗號(,)或分號(;)隔開。

例如Beams.xml的第7行若改為如下,則在MainApp.java的第11行getBean()用"helloWorld","hello","hi","world"皆可以取得該bean的實例。

------------------------------------

 

 

在<bean> ... </bean>定義之外,另外可用<alias>來給予bean的別名(alias),參考下面範例

...

alias的name屬性必須對應到bean的id或是name (line 10,11)

alias屬性的名稱最好是唯一,以避免可能的命名衝突。

和上面範例類似,MainApp.java中的getBean()方法一樣可使用bean的id "helloWorld"或別名"hello"或"hi"來取得bean的實例。

 

為什麼要提供bean多種命名的方式呢,通常是為了應付大型系統的需求。因為大型系統下面有許多的子系統,每個子系統各有其定義的物件,因此提供多組名稱讓取得實例的方式變得更有彈性,避免命名上的衝突。
(我目前的經歷還沒碰過,只能大概理解(2015/11/4))

 

 

 

 

 

文章標籤
創作者介紹

菲比傻大姐&肉豬

phoebelin0606 發表在 痞客邦 PIXNET 留言(0) 人氣()