Spring配置中的id和name的區別

2021-09-11 14:57:46 字數 2297 閱讀 9549

用到的student類

public class student 

@override

public string tostring() ';

}}

一、配置bean的時候,可以不設定id,也可以不設定name,spring會預設的使用類的全限定名作為bean的唯一識別符號。

//當配置bean時候沒有指定id和name時,spring預設使用類的全限定名作為bean的唯一識別符號

student student = (student)ctx.getbean(student.class.getcanonicalname());

system.out.println(student);

輸出:student

二、如果配置bean時,只設定了id屬性,那麼id就是作為bean的唯一識別符號,且id在spring容器中必須唯一。

student student1 = (student)ctx.getbean("student1");

system.out.println(student1);

輸出:student

三、如果配置bean時,沒有設定id屬性,只設定了name屬性,那麼name屬性就是作為bean的唯一識別符號,且name的值在spring容器中必須唯一。

student student2 = (student)ctx.getbean("student2");

system.out.println(student2);

輸出:student

四、如果同時設定了id和name屬性,那麼id設定的即為唯一識別符號,name設定的是別名。

student student3 = (student)ctx.getbean("student3");

system.out.println(student3);

string student3name = ctx.getaliases("student3");

system.out.println("student3的別名為:");

for(string s:student3name)

輸出:student

student3的別名為:

student33

五、如果同時設定了id和name屬性,並且id和name的值相同,spring容器會自動檢測並消除衝突,這個bean就只會有識別符號,而沒有別名。

student student4 = (student)ctx.getbean("student4");

system.out.println(student4);

string student4name = ctx.getaliases("student4");

system.out.println("student4的別名個數為:"+student4name.length);

輸出:student

student4的別名個數為:0

六、如果沒有設定id,而name屬性設定了多個值,那麼name的第乙個值會被用作識別符號,其他的值被視為別名。如果設定了id,那麼name的所有值都是別名。

student student5 = (student)ctx.getbean("student5");

system.out.println(student4);

string student5name = ctx.getaliases("student5");

system.out.println("student5的別名為:");

for(string s:student5name)

system.out.println("student5的別名個數為:"+student5name.length);

輸出:student

student5的別名為:

student6

student8

student7

student5的別名個數為:3 

注意:

(1)不管是識別符號,還是別名,在容器中必需唯一。因為識別符號和別名,都是可以用來獲取bean的,如果不唯一,顯然不知道獲取的到底是哪乙個bean。

(2)識別符號和別名沒有任何區別,id和name屬性唯一的差別在於:id只能設定乙個值,而name可以設定多個值。

Spring配置中的id和name屬性區分

在spring容器管理的bean中,必須僅且只有乙個無重複的id。一般情況下,配置乙個bean時,需要指定它的id屬性作為bean的名稱。class com.learnspring.hellworld q 如果在spring環境下,如果出現多個配置id屬性值一樣的bean 如果在配置bean的時候並...

Spring配置中的id和name屬性區分

在spring容器管理的bean中,必須僅且只有乙個無重複的id。一般情況下,配置乙個bean時,需要指定它的id屬性作為bean的名稱。class com.learnspring.hellworld q 如果在spring環境下,如果出現多個配置id屬性值一樣的bean 如果在配置bean的時候並...

spring中的Bean的id和name的區別

spring中bean的命名 1 每個bean可以有乙個id屬性,並可以根據該id在ioc容器中查詢該bean,該id屬性值必須在ioc容器中唯一 2 可以不指定id屬性,只指定全限定類名,如 此時需要通過介面getbean class requiredtype 來獲取bean 如果該bean找不到...