<!-- 配置一個dog --> <bean id="dog" class="com.pas.collection.Dog"> <property name="name" value="大黃" /> <property name="age" value="3" /> </bean> <!-- master --> <bean id="master" class="com.pas.collection.Master" autowire="byName"> <property name="name" value="小李" /> </bean> <!-- master --> <bean id="master1" class="com.pas.collection.Master" autowire="byType"> <property name="name" value="小李" /> </bean> <!-- master --> <bean id="master2" class="com.pas.collection.Master" autowire="constructor"> <property name="name" value="小李" /> </bean> /* * defualt 這個須要在<beans defualt-autorwire=「指定」 /> 當你在<beans >指定了 * default-atuowrite後, 全部的bean的 默認的autowire就是 指定的裝配方法; 若是沒有在<beans * defualt-autorwire=「指定」 /> 沒有 defualt-autorwire=「指定」 ,則默認是 * defualt-autorwire=」no」 */
模式 | 說明 |
---|---|
no | |
byName | 根據屬性名自動裝配。此選項將檢查容器並根據名字查找與屬性徹底一致的bean,並將其與屬性自動裝配。例如,在bean定義中將autowire設置爲by name,而該bean包含master屬性(同時提供setMaster(..)方法),Spring就會查找名爲master的bean定義,並用它來裝配給master屬性。 spa |
byType | 若是容器中存在一個與指定屬性類型相同的bean,那麼將與該屬性自動裝配。若是存在多個該類型的bean,那麼將會拋出異常,並指出不能使用byType方式進行自動裝配。若沒有找到相匹配的bean,則什麼事都不發生,屬性也不會被設置。若是你不但願這樣,那麼能夠經過設置dependency-check="objects"讓Spring拋出異常。 code |
constructor | 與byType的方式相似,不一樣之處在於它應用於構造器參數。若是在容器中沒有找到與構造器參數類型一致的bean,那麼將會拋出異常。 xml |
autodetect | 經過bean類的自省機制(introspection)來決定是使用constructor仍是byType方式進行自動裝配。若是發現默認的構造器,那麼將使用byType方式。 it |