Spring 自動裝配

2021-08-10 04:13:17 字數 2045 閱讀 6352

1.通過xml配置檔案中的autowire來實現spring的自動裝配,目的是為了簡化spring的配置

1.自動裝配的幾種方式:

1.byname:通過我們注入的bean物件中設定的autowire="byname",得到bean物件中的需要的依賴物件的屬性的名稱(也就是set方法的屬性名稱,也就是說所依賴物件的屬性必   須有setter方法),然後查詢所依賴的物件是否被spring容器建立,如果已經建立,則會把我們所依賴的物件自動注入進來,如果沒有建立,則不會注入

<

beanid="studentdao"class="com.ioc.demo.studentdao">

bean>

<

beanid="student"class="com.ioc.demo.student"autowire="byname">

bean>

2.如果我們乙個bean物件要依賴多個物件,這個時候我們在使用byname會非常麻煩,所以spring為我們提供了一種配置全域性自動裝配都使用byname方式

"default-autowire="byname">

3.bytype:通過我們注入的bean物件中設定的autowire="bytype",找到我們所依賴物件的setter方法裡面的引數型別,根據引數型別去spring容器中查詢bean物件,如果已經建立,則會把我們所依賴的物件自動注入進來,如果沒有建立,則不會注入

4.在使用byttype方式裝配時,被依賴的bean物件可以忽略id,但是不允許有兩個相同型別的bean物件,否則會報錯

5.no:表示不設定裝配方式

6.constructor:使用有參構造器來裝配,當我們使用構造器來例項化物件的時候,推薦使用bytype方式來裝配

1.no:即不啟用自動裝配。autowire預設的值。預設情況下,需要通過"ref"來裝配bean,

2.byname:按名稱裝配? 可以根據屬性的名稱在容器中查詢與該屬性名稱相同的bean,如果沒有找到,則屬性值為null

3.bytype:按型別裝配? 可以根據屬性型別,在容器中尋找該型別匹配的bean,如有多個,則會丟擲unsatisfieddependencyexception異常,如果沒有找到,則屬性值為null。

4.constructor:與bytype方式相似,不同之處在與它應用於構造器引數,如果在容器中沒有找到與構造器引數型別一致的bean,那麼將丟擲異常。(根據構造函式引數的資料型別,進行bytype模式的自動裝配。)

5.autodetect:通過bean類的自省機制(introspection)來決定是使用constructor還是bytype的方式進行自動裝配。如果bean有空構造器那麼將採用「bytype」自動裝配方式,否則使用「constructor」自動裝配方式。

6.default:由上級標籤的default-autowire屬性確定。

7.注意:在配置bean時,標籤中autowire屬性的優先順序比其上級標籤高,即是說,如果在上級標籤中定義default-autowire屬性為byname,而在中定義為bytype時,spring ioc容器會優先使用標籤的配置。

8.我們不推薦使用自動裝配,推薦使用annotation(註解)

Spring自動裝配

先在cn.csdn.hr.dao包中建立幾個檔案 public inte ce basedao public class basehibernatedaoimpl implements basedao public inte ce customerdao public class customerd...

Spring自動裝配

通常情況下,配置bean的時候,一些屬性依賴需要我們自己去裝配,但是如果這是乙個比較大型的工程,裡面定義了成百上千個bean,那全都靠我們手工去裝配,你一定打心底厭煩,幸運的是spring為我們提供了自動裝配的方式 只要遵循一定的規則,spring就會自動幫你裝配依賴,而不需要你手工去裝配 自動裝配...

Spring 自動裝配

bean的自動裝配 autowiring 四種型別 1.no 不做任何操作 2.byname 根據屬性名自動裝配。此選項將檢查容器並根據名字查詢與屬性完全一致的bean,並將其與屬性自動裝配 3.bytype 如果容器中存在乙個與指定屬性型別相同的bean,那麼將與該屬性自動裝配 如果存在多個該型別...