依賴檢查
spring表示式
自動裝配(autowire)協作者
spring ioc容器可以自動裝配(autowire)相互協作bean之間的關聯關係。因此,如果可能的話,可以自動讓spring通過檢查beanfactory中的內容,來替我們指定bean的協作者(其他被依賴的bean)。
autowire一共有五種型別。由於autowire可以針對單個bean進行設定,因此可以讓有些bean使用autowire,有些bean不採用。autowire的方便之處在減少或者消除屬性或構造器引數的設定,這樣可以給我們的配置檔案會更精簡!
模式說明
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方式。
autowire.restaurant
package autowire;
public
class restaurant
public waiter getwt()
public
void
setwt(waiter wt)
@override
public string tostring()
}
autowire.waiter
package autowire;
public
class waiter
}
根據byname查詢xml檔案
id="wt"
class="autowire.waiter">
bean>
id="rest"
class="autowire.restaurant"
autowire="byname">
bean>
* 結果:*
waiter的無參構造。。
restaurant無參構造
restaurant的set方法。。。。
restaurant [wt=autowire.waiter@43814d18]
byname:查詢id等於屬性名的bean,然後呼叫set完成注入
如果找不到對應的bean,會注入null;
注意:a.有參構造
b.有set方法
根據bytype查詢xml檔案
id="wt1"
class="autowire.waiter">
bean>
id="rest"
class="autowire.restaurant"
autowire="bytype" >
bean>
* 結果:*
waiter的無參構造。。
restaurant無參構造
restaurant的set方法。。。。
restaurant [wt=autowire.waiter@3701eaf6]
bytype:查詢與屬性型別一致的bean,然後set方法注入
如果找不到對應的bean會注入null;
找到多個報錯
注意:a.有參構造
b.有set方法
注意:容器預設情況下,禁止自動裝配。如果直接使用property和constructor-arg注入依賴的話,那麼將總是覆蓋自動裝配。
檢查bean定義中實際屬性值的設定.
依賴檢查預設為not,它有幾種不同的使用模式,在xml配置檔案中,可以在bean定義中為dependency-check屬性使用以下幾種值:
模式說明
none
沒有依賴檢查,如果bean的屬性沒有值的話可以不用設定。
******
對於原始型別及集合(除協作者外的一切東西)執行依賴檢查
object
僅對協作者執行依賴檢查
all對協作者,原始型別及集合執行依賴檢查
讀取bean或者集合的屬性值。語法類似el表示式
使用spring表示式讀取其它的bean的屬性值。
#:讀取id等於eb的bean的name屬性值。
#:讀取id等於eb的bean的cities屬性值(cities是乙個list,讀取的是下標等於0的元素的值)。
cities屬性值(cities是乙個list,讀取的是下標等於0的元素的值)。
#:讀取id等於eb的bean的
score屬性值(score是乙個map,讀取的是key等於math的value值)。
#:讀取id等於config的
bean的pagesize屬性值(pagesize是properties中的key)。
class="basic.somebean">
name="name" value="#"/>
name="city"
value="#"/>
name="score"
value="#"/>
name="pagesize"
value="#"/>
三 Spring之屬性賦值和自動裝配
1 基本數值 2 可以寫spel 3 可以寫 取出配置檔案 properties 中的值 在執行環境變數裡面的值 這樣可以給person類的屬性賦預設值 public class person private integer age value private string nickname 給方法...
Spring3 x 使用SpEL表示式裝配
我們為bean的屬性和構造器引數裝配的所有東西都是在spring的xml配置檔案中靜態定義的。同樣我們裝配其他bean的引用也都是在配置spring配置檔案時就已經確定了。但是,我們為屬性裝配的值在執行期才能知道,那又如何實現呢?spring3引入了spring表示式語言,spel。spel是一種強...
Spring 切點表示式
摘要 spring中的aspectj切點表示式函式 切點表示式函式就像我們的gps導航軟體。通過切點表示式函式,再配合萬用字元和邏輯運算子的靈活運用,我們能很好定位到我們需要織入增強的連線點上。經過上面的鋪墊,下面來看看springz中支援的切點表 spring中的aspectj切點表示式函式 切點...