目錄
一、ioc容器注入中bean在xml配置裡面自動裝配
我們來看乙個自動裝配的樣例:
二、xml配置裡面bean自動裝配的缺點
spring ioc容器可以自動裝配bean,需要做的是在的autowire屬性裡面指定自動裝配的模式;
bytype(根據型別自動裝配),若在ioc容器中有多個與目標bean型別一致的bean,在這種情況下,spring將無法判斷哪個bean最合適該屬性,所以不能執行自動裝配。
byname(根據名稱自動裝配),必須將目標bean的名稱和屬性名設定的完全相同;
constructor(通過構造器自動裝配),當bean中存在多個構造器時候,此種自動裝配方式將會很複雜(不推薦使用)。
先在新建的autowire包中新建person,address,car三個實體類,分別如下:
person類:
public class person
public void setname(string name)
public address getaddress()
public void setaddress(address address)
public car getcar()
public void setcar(car car)
@override
public string tostring()
}
address類:
public class address
public void setcity(string city)
public string getstreet()
public void setstreet(string street)
@override
public string tostring()
}
car類:
public class car
public void setbrand(string brand)
public double getprice()
public void setprice(double price)
@override
public string tostring()
}
然後在src下面新建bean的配置檔案bean-autowire.xml,
可以使用autowire屬性指定自動裝配的方式。
byname 根據bean的名字和當前bean的setter風格的屬性名進行自動裝配,若有匹配的,則進行自動裝配,若沒有匹配的,則不裝配 ;
bytype 根據bean的型別和當前bean的屬性型別進行自動裝配。若ioc容器中有乙個以上的型別的bean,則拋異常。
xml的**如下:
<?xml version="1.0" encoding="utf-8"?>
在bean配置檔案裡面設定autowire進行自動裝配將會裝配bean的所有屬性,然而,若只希望裝配個別屬性的時候,autowire屬性就不夠靈敏了;
autowire屬性要麼根據型別自動裝配,要麼根據名稱自動裝配,不能兩者兼而得之;
一般情況下,在實際的專案中,很少使用自動裝配的功能,因為和自動裝配功能所帶來的的好處比起來,明確清晰的配置文件更有說服力一些。
Spring學習 IOC容器 xml
1.xml檔案配置 2.註解 commons logging 1.2 bin spring framework 4.3.0.release dist匯入到專案 建立乙個類,用來完成對spring配置檔案的載入和銷毀 所有的單元測試類都必須繼承自上類,並且都必須加註解 runwith blockjun...
spring學習之IoC容器
jinnianshilongnian 寫道 理解ioc容器問題關鍵 控制的哪些方面被反轉了?1 誰控制誰?為什麼叫反轉?ioc容器控制,而以前是應用程式控制,所以叫反轉 2 控制什麼?控制應用程式所需要的資源 物件 檔案 3 為什麼控制?解耦元件之間的關係 4 控制的哪些方面被反轉了?程式的控制權發...
簡單實現spring中Ioc容器
spring的ioc容器是通過工廠模式 反射機制完成的。簡單來說反射機制就是我們可以通過類的名字來生成物件。比如比較常見的用法 person p person class.forname chinese newinstance 這樣子,我們可以直接通過chinese這個類的名字來構造這個物件。下面我...