什麼是自動裝配
裝配即是建立應用對象之間協作關係的行為,其實也就是注入依賴的屬性。
例如:
/** * 描述鞋子的類 */public class Boot{}/** * 描述人的類 */public class Person{ private Boot boot; public Person(){ } public Person(Boot boot){ this.boot = boot; } public void setBoot(Boot boot){ this.boot = boot; }}
在這個非常簡單的Person類中,擁有一個屬性boot(鞋子),也就可以說Person類依賴於類Boot,或者說Boot類是Person類的依賴。
注入依賴的意思就是說,在定義一個bean對象(這裡指的是Person對象)的時候,需要給指定的屬性賦值(這裡可以指的是boot屬性)。
自動裝配:在定義一個bean的時候,自動給某一些屬性注入基礎資料型別 (Elementary Data Type)的值或者其他bean的引用。
而自動裝配也即是自動注入依賴是相比於用XML檔案來手動注入的。用XML檔案來手動輸入,也即是用元素< constructor-arg>和< property>來裝配,將會由具體的文章來詳細的描述,這裡不再贅述。 自動裝配有什麼好處
自動裝配有助於減少甚至消除配置<property>元素和<constructor-arg>,減少XML的配置數量,當然不用寫XML檔案,我們自然要輕鬆地多。 如何使用自動裝配
想要使用自動裝配就必須要詳細地瞭解自動裝配。 自動裝配類型
自動裝配分成四種: byName
按照bean的屬性名稱來匹配要裝配的bean
例如:Person類中的屬性boot按照此規則則要裝配id為boot的其他bean到boot屬性中,就是建立一個id為boot的其他bean對象來賦值給Person類的boot屬性。
Boot boot = new Boot();Person person = new Person();person.setBoot(boot);//根據屬性的名稱來匹配
byType
按照bean的類型來匹配要裝配的bean
例如:Person類的的屬性類型為Boot,如果按照byType來進行自動裝配,則會匹配Boot類的bean對象
Boot boot2 = new Boot();Person person = new Person();person.setBoot(boot2);//它根據類型來匹配,不根據名稱來匹配
constructor
按照bean的構造器入參的類型來進行匹配
例如:Person類有一個擁有一個入參的構造器,其入參的類型為Boot,所以它會裝配類型為Boot的bean。
Boot boot2 = new Boot();Person person = new Person(boot2);//它根據類型來匹配,不根據名稱來匹配
autodetect(自動探測)
先使用constructor進行裝配,如果不成功就使用byType來裝配
如何設定自動裝配
單獨配置
<bean id = "auto" class = "com.wang.AutoClass" autowire="byType" />
即是通過<bean>元素的autowire屬性來設定四種自動裝配類型 預設配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd default-autowire ="byType">
如果每一個bean的自動裝配的方式都相同,則可以設定預設配置,就不需要每一個bean元素都去配置。