spring支援四種自動裝配模式:通過命名、通過型別、構造器或自動檢測。
通過命名自動裝配:spring嘗試將每個屬性連線到乙個同名的bean上。因此,如果目標bean擁有乙個叫做foo的屬性而bean工廠中定義了乙個命名為foo的bean,那麼foo這個bean會被分配給目標的foo屬性。
部分配置**:
通過型別自動裝配:spring試圖將目標bean的每個屬性與bean工廠中對應的同型別的bean連線起來。如果在目標bean中有乙個string型別的屬性,而在bean工廠中有string型別的bean,那麼spring會將string的bean和目標型別的string屬性連線起來。如果你在同乙個bean工廠中有多個相同的型別的bean,比如string,那麼spring不能確定使用哪個進行自動裝配,而後會丟擲異常。
部分配置**:
構造器自動裝配:與通過型別的自動裝配類似,只是它通過構造器代替setter進行注入。spring試圖最大數量地匹配構造器中包含的引數。比如,如果你的bean擁有兩個構造器,乙個接受乙個string,另乙個接受乙個string和乙個整數,而你的的bean工廠中同時有string和整數bean,spring會使用那個接受兩個引數的構器。
部分配置**:
自動檢測自動裝配:通知spring在構造器自動裝配和通過型別的自動裝配間進行選擇。
部分配置**:
注意:什麼時候使用自動裝配?
在大部分情況下,關於是否應該使用自動裝配這個問題的答案當然是「不!」,雖然自動裝配可以在小規模的程式中節省你的時間,但是它會讓你養成壞習慣,在大規模的程式中彈性也不夠。實際上對bean進行精確的定義並不會消耗你太多的工作,那樣你通夠從精確的語義,完全自由的屬性命名還有規定要管理同乙個型別的多少個例項這些地方受益。除了非常小的應用程式,無論如何也要繞開使用自動裝配。
Spring中Bean的自動裝配
1.no 不做任何操作 class com.test.a name b ref b property id b class com.test.b 2.byname 根據屬性名自動裝配。此選項將檢查容器並根據名字查詢與屬性完全一致的bean,並將其與屬性自動裝配 修改配置檔案 id a class c...
spring中Bean的自動裝配
新增乙個person類 package autowire public class person public void setname string name public address getaddress public void setaddress address address publ...
spring中bean的自動裝配
為了解決bean每次都配置的那麼麻煩,spring提供了乙個自動裝配的功能,個人感覺功能有一些雞肋 假設我們有乙個user類,然後裡面有兩個屬性分別是名字和位址 user package com.zhouning.spring.beans public class user public user ...