1.bean的命名
每個bean可以有乙個或多個id(或稱之為識別符號或名字),在這裡我們把
第乙個id稱為「識別符號」,其餘id叫做「別名」
;這些id在ioc容器中必須唯一。如何為bean指定id呢,有以下幾種方式;
(一)不指定id,只配置必須的全限定類名,由ioc容器為其生成乙個標識,客戶端必須通過介面「t getbean(classrequiredtype)」獲取bean;
測試的**如下:
@test
public void test1()
[2015-07-09 11:56:17.738]-[debug] org.springframework.beans.factory.xml.defaultbeandefinitiondocumentreader loading bean definitions
[2015-07-09 11:56:17.758]-[debug] org.springframework.beans.factory.xml.beandefinitionparserdelegateneither xml 'id' nor 'name' specified - using generated bean name [com.cdqcookes.spring.chapter01.helloworldimpl#0]
從以上的輸出日誌可以看出,spring為我們動態生成了乙個id: com.cdqcookes.spring.chapter01.helloworldimpl#0
(二)指定乙個id,該id必須在ioc容器中唯一
測試的**如下:
@test
public void test2()
(三)
指定乙個name,該name必須在ioc容器中唯一
測試的**如下:
@test
public void test3()
(四)指定id和name,id就是識別符號,而name就是別名,必須在ioc容器中唯一;
測試的**如下:
public void test4()
(五)
指定多個name,多個name用"","," ",";"分割,第乙個被用作識別符號,其他的(alias1、alias2、alias3)是別名,所有識別符號也必須在ioc容器中唯一;spring的別名和標識對於方法getaliases沒有區別,也就是說alias21的別名是bean2,alias22
測試的**如下:
@test
public void test5()
assert.assertequals(4, bean1alias.length);
//根據id獲取bean
ihelloworld bean2 = beanfactory.getbean("bean2", ihelloworld.class);
bean2.sayhello();
//2根據別名獲取bean
ihelloworld alias21 = beanfactory.getbean("alias21", ihelloworld.class);
alias21.sayhello();
//驗證確實是兩個別名
string bean2alias = beanfactory.getaliases("bean2");
system.out.println("*****== bean2 別名*****===");
for(string alias : bean2alias)
assert.assertequals(2, bean2alias.length);
}
(六)、使用標籤指定別名,別名也必須在ioc容器中唯一
測試的**如下:
@test
public void test6()
assert.assertequals(2, beanalias.length);
}
2.例項化bean
Spring學習筆記 IoC
getbean 方法 引數為class時要保證配置檔案中bean唯一 構造器注入 通過constructor arg節點注入 工廠方法注入 很少使用 繼承 通過在bean中新增屬性parent指定繼承的父bean,也可以忽略父 bean 的 class 屬性,此時 abstract屬性 必須設為 t...
Spring學習筆記(一) IoC之DI
spring的乙個核心概念就是ioc,所謂ioc,即inversion of control,中文譯為控制反轉。其核心思想即高層模組要依賴於抽象,而不是依賴於底層模組,換句話說,也就是實現必需依賴於抽象,而不是抽象依賴於實現。這裡所說的高層模組是指與業務相聯絡的模組。而低層模組是指與底層實現相聯絡的...
Spring之IOC 學習筆記
ioc ioc理論的背景 依賴注入 di ioc的好處 ioc的通俗理解 ioc ioc inversionof control,控制反轉 是 spring 的核心,貫穿始終。所謂 ioc,對於 spring 框架來說,就是由 spring 來負責控制物件的生命週期和物件的關係 傳統開發模式 物件之...