Spring學習(4) IOC容器中的自動裝配

2021-10-23 10:45:52 字數 1767 閱讀 5086

目錄

一、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這個類的名字來構造這個物件。下面我...