乙個bean使用其他的bean,除了顯式的配置xml檔案外,也可以通過配置< bean >的autowire
屬性來實現bean的自動裝配。自動裝配的好處是減少了構造器注入和setter注入配置(其實就是少了< property >標籤,但是bean裡面set方法還是必須的),減少了配置檔案的長度。
spring 3.0支援以下4種自動裝配模式:
模式描述
no預設的設定,它意味著沒有自動裝配,此時應該顯式配置bean
byname
根據屬性名自動裝配。spring容器將根據名字查詢與屬性完全一致的bean,然後將其自動裝配
bytype
根據屬性型別自動裝配。如果容器中存在乙個與指定型別相同的bean,那麼將與該屬性自動裝配;如果存在多個該型別的bean,那麼丟擲異常,提示不能使用bytype方式進行自動裝配;如果沒有找到相匹配的bean,那麼不會發生任何事
constructor
與bytype方式類似,不同的是它應用於構造器引數。如果沒有找到對應型別的bean,那麼將會丟擲異常
下面以bytype方式為例進行演示:
首先建立乙個autowiringservice類(set方法還是必須要寫的):
package com.spring.test;
public
class autowiringservice
public
void
say(string s)
}
然後建立乙個的依賴類autowiringdao:
public
class autowiringdao
}
xml配置檔案:
<?xml version="1.0" encoding="utf-8"?>
xmlns=""
xmlns:xsi=""
xsi:schemalocation="
/spring-beans-3.0.xsd">
id="autowiringservice"
class="com.spring.test.autowiringservice"
autowire="bytype">
bean>
id="autowiringdao"
class="com.spring.test.autowiringdao">
bean>
beans>
測試類:
public
public
static
void
main(string args)
}
測試結果:如果配置了多個依賴型別的bean,那麼bytype的方式就會報錯:
xml檔案配置:
id="autowiringservice"
class="com.spring.test.autowiringservice"
autowire="bytype">
bean>
id="autowiringdao"
class="com.spring.test.autowiringdao">
bean>
id="autowiringdao2"
class="com.spring.test.autowiringdao">
bean>
如果覺得對每個bean都配置乙個autowire
太麻煩,那麼可以通過全域性的< beans >的default-autowire
屬性來指定所有的bean的自動裝配方式:
""
xmlns:xsi=""
xsi:schemalocation="
/spring-beans-3.0.xsd"
default-autowire="bytype">
...
spring bean的自動裝配
spring bean的自動裝配 在spring框架應用場景中會有這麼一種情況。乙個bean在不同的使用類裡面都要配置。這個bean相對來說是單獨的。也就是說如果要裝配這個bean.在不同的使用類裡面都需要寫相關的 注入 那有沒有這麼一種方式。可以通過配置自動的來注入bean到相關的屬性中去。spr...
Spring Bean的自動裝配
當bean的屬性很少的時候,我們對它進行配置的時候就使用很少的或者元素進行裝配,但是隨著工程體積的增大,bean也可能變得複雜,這時候配置檔案也會變得複雜,和就會變得很多,寫起來就會很費勁,還好spring為我們提供了自動裝配的機制。spring ioc容器可以自動裝配bean,只需要在的autow...
學習spring bean自動裝配
spring 容器可以在不使用和元素的情況下 自動裝配 相互協作的 bean 之間的關係,這有助於減少編寫乙個大的基於 spring 的應用程式的 xml 配置的數量。下列自動裝配模式,它們可用於指示 spring 容器為來使用自動裝配進行依賴注入。你可以使用元素的 autowire 屬性為乙個 b...