自動裝配bean的屬性值
模式說明
no
byname
根據屬性名自動裝配。此選項將檢查容器並根據名字查詢與屬性完全一致的bean,並將其與屬性自動裝配。例如,在bean定義中將autowire設定為by name,而該bean包含master
屬性(同時提供setmaster(..)
方法),spring就會查詢名為master
的bean定義,並用它來裝配給master屬性。
bytype
如果容器中存在乙個與指定屬性型別相同的bean,那麼將與該屬性自動裝配。如果存在多個該型別的bean,那麼將會丟擲異常,並指出不能使用bytype
方式進行自動裝配。若沒有找到相匹配的bean,則什麼事都不發生,屬性也不會被設定。如果你不希望這樣,那麼可以通過設定dependency-check="objects"
讓spring丟擲異常。
constructor
與bytype
的方式類似,不同之處在於它應用於構造器引數。如果在容器中沒有找到與構造器引數型別一致的bean,那麼將會丟擲異常。
autodetect
通過bean類的自省機制(introspection)來決定是使用constructor
還是bytype
方式進行自動裝配。如果發現預設的構造器,那麼將使用bytype
方式。1、byname的用法:
<?xml version="1.0" encoding="utf-8"?>
autowire="byname">
byname方式,master的屬性dog雖然沒有配置,但是spring容器會自動查詢id為dog的bean,然後賦給master的dog屬性,這時按名字自動裝配。
byname尋找和屬性名相同的bean,若找不到,則裝配不上。
2、bytype的用法:尋找和屬性型別相同的bean,找不到,裝配不上,找到多個拋異常。
3、constructor:查詢和bean的構造引數一致的乙個或多個bean,若找不到或找到多個,拋異常,按照引數的型別裝配
4、autodetect:3和2之間選乙個方式。不確定性的處理與3和2一致,建構函式方式優先
5、default:這個需要在,當你在中指定了default-autowire後,的、所有的bean的預設的autowire就是指定的裝配方法;
如果沒有在沒有default-autowire="指定",則預設是default-autowire=「no」
6、no:不自動裝配,這是autowire的預設方式。
7、混合使用手動和自動組裝
8、spring2.5提供了配置,該配置可以啟用在類中探測到的各種註解,@requested @autowire @postconstrct @predestroy @resource @ejb @persistencecontext @webserviceref等等,也可以選擇為這些註解啟用單獨的後處理器。
例如:autowiredannotationbeanpostprocessor(處理自動裝配),commonannotationbeanpostproccessor(生命週期等)
注意,該標誌不能啟用事務處理,需要使用tx:annotation-driven
9、使用spring的特殊bean
讓spring特殊對待這些bean。使它們可以:
1)通過配置後加工bean,涉及到bean和bean工廠生命週期。
2)改變依賴注入,將字串轉換為其他型別
3)從屬性文字裝載資訊,包括資訊國際化。
4)監聽並處理其他bean及spring發布的系統訊息。
5)知道自己在spring中的唯一標識。
在配置檔案中可以配置三種bean:一種是我們自己寫的bean,一種是別人寫的打包給我們的,第三種就是spring本身提供的特殊bean
如對bean進行後處理的beanpostprocessor介面提供機會來修改bean。
public inte***ce beanpostprocessor
public void setdriver(string driver)
public string geturl()
public void seturl(string url)
public string getname()
public void setname(string name)
public string getpwd()
public void setpwd(string pwd)
}
<?xml version="1.0" encoding="utf-8"?>
db.properties
name=scott
driver=oracle:jdbc:driver:oracledriver
url=jdbc:oracle:thin:@127.0.0.1:1521:cdtax
pwd=tiger
db2.properties
db2.name=scott2
db2.driver=oracle:jdbc:driver:oracledriver2
db2.url=jdbc:oracle:thin:@127.0.0.1:1521:cdtax2
db2.pwd=tiger2
package com.cdtax.dispatch;
}
執行結果:
driver:=oracle:jdbc:driver:oracledriver
name:=scott
url:=jdbc:oracle:thin:@127.0.0.1:1521:cdtax
pwd:=tiger
driver:=oracle:jdbc:driver:oracledriver2
name:=scott2
url:=jdbc:oracle:thin:@127.0.0.1:1521:cdtax2
pwd:=tiger2
自動裝配(Autowire)
了解 自動裝配 autowire 自動裝配表現為不需要配置 節點來注入,spring會自動的為屬性注入值!在 節點中新增 autowire 屬性以配置自動裝配。重要 當取值為 byname 時,表示 根據名稱 自動裝配,即spring會檢查這個bean的所有的屬性名稱,然後在spring管理的所有b...
autowire自動裝配
autowire自動裝配 auto自動裝配就是在要使用bean的時候進行自動注入 注意!自動注入只能注入引用資料型別和自定義類,其中基礎資料型別和string資料型別不能自動注入,自動注入也沒有意義,會報錯。解釋 我們自動注入注入的是有效的屬性值,針對自定義類,只能注入例項,那注入的就是乙個例項,這...
Java spring自動裝配Bean的4種方式
spring自動裝配bean有4種方式 第一種 autowire default 即no 第二種 autowire byname 即,根據屬性的名稱裝載 第三種 autowire bytype 即根據屬性的型別進行裝載bean 或者通過註解的方式也可以根據工廠裝配 autowired private...