本節書摘來自異步社群《spring攻略(第2版)》一書中的第1章,第1.9節,作者: 【美】gary mak , josh long , daniel rubio著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
1.9.1 問題
在大規模的應用中,ioc容器中可能聲明了幾百個或者幾千個bean,這些bean之間的依賴往往非常複雜。設值方法注入的不足之一是無法确定一個屬性将會被注入。檢查所有必要的屬性是否已經設定是非常困難的。
1.9.2 解決方案
spring的依賴檢查功能能夠幫助你檢查在一個bean上的所有特定類型屬性是否都已經設定。你隻要在的dependency-check屬性中指定依賴檢查模式就可以了。注意,依賴檢查功能隻能檢查屬性是否已經設定,而無法檢查它們的值是否非空。表1-1列出了spring支援的所有依賴檢查模式。

*預設模式為none,但是可以設定根元素的default-dependency-check屬性來改變。如果bean指定了自己的模式,預設模式将被覆寫。你必須小心設定這個屬性,因為它将改變ioc容器中的所有bean的預設依賴檢查模式。
1.9.3 工作原理
檢查簡單類型屬性
假定序列生成器的suffix屬性沒有設定。那麼生成器将生成字尾為空字元串的序列号。這種問題通常很難調試,特别是在複雜的bean中。幸運的是,spring能夠檢查所有特定類型的屬性是否已經設定。為了要求spring檢查簡單類型(也就是原始類型和集合類型)的屬性,将的dependency-check屬性設定為simple。
如果任何這些類型的屬性沒有設定,就會抛出unsatisfieddependencyexception異常,指出未設定的屬性。
檢查對象類型的屬性
如果字首生成器未被設定,請求它的時候将會抛出讨厭的nullpointerexception異常。為了使依賴檢查能檢查對象類型(也就是簡單類型之外的)的bean屬性,将dependency-check屬性改為objects。
當你運作應用程式時,spring将通知你prefixgenerator屬性未設定。
檢查所有類型屬性
如果你想檢查任何類型的所有bean屬性,可以将dependency-check屬性改為all。
依賴檢查和構造程式注入
spring的依賴檢查功能隻檢查屬性是否通過設值方法注入。是以,即使你已經通過構造程式注入了字首生成器,仍然會抛出unsatisfieddependencyexception異常。