天天看點

Spring-Context之八:一些依賴注入的小技巧

Spring架構在依賴注入方面是非常靈活和強大的,多了解點一些注入的方式、方法,絕對能優化配置。

idref屬性可以傳入一個bean的名稱,雖然它是指向一個bean的引用,但是得到的是該bean的id名。

它和直接設定serviceRef屬性的value為movieService的差別是前者是能夠保證必須有一個名movieService的bean存在于目前的spring容器中,如果沒有則Spring容器會在初始化階段就會報錯;而後者僅僅是一個字元串,spring容器在初始化不會做任何檢查,很可能将異常推後到運作時抛出。

bean的定義是可以嵌套的。

可以改為這種方式。

這樣内部bean就不需要一個名字的,當然這也意味着它無法被其他bean引用了。當然即使你給它起了名字,Spring容器也會忽略這個名字,其他bean也無法引用它。neibubean的scope始終和waibubean的scope保持一緻。

Java的集合架構中包含很多集合元素,比如List、Map、Set等。Spring支援對這些集合元素的注入。

還可以直接配置java的Properties。

Spring支援使用嵌套屬性注入值。

Restaurant.java

Person.java

需注意除了最後一個屬性,其他屬性不能為空值。

當你初始化一個bean時,需要另一個bean先被初始化,這種情況很常見。雖然Spring在最大程度上能自動按照你期望的順序來初始化bean(比如構造器注入的bean會優先初始化),但是不保證總能符合你的心意。你可以使用depends-on屬性來顯示指定bean的初始化順序。

也可以同時deppends-on多個對象。