springmvc中為什麼需要用父子容器?

2021-10-05 16:23:51 字數 1119 閱讀 1489

springmvc中為什麼需要用父子容器?

1.什麼是父子容器?

父子容器特點

父容器和子容器是相互隔離的,他們內部可以存在名稱相同的bean

子容器可以訪問父容器中的bean,而父容器不能訪問子容器中的bean

呼叫子容器的getbean方法獲取bean的時候,會沿著當前容器開始向上面的容器進行查詢,直到找到對應的bean為止

子容器中可以通過任何注入方式注入父容器中的bean,而父容器中是無法注入子容器中的bean,原因是第2點

2.為什麼需要用父子容器?

通常我們使用springmvc的時候,採用3層結構,controller層,service層,dao層;父容器中會包含dao層和service層,而子容器中包含的只有controller層;這2個容器組成了父子容器的關係,controller層通常會注入service層的bean。

採用父子容器可以避免有些人在service層去注入controller層的bean,導致整個依賴層次是比較混亂的。

父容器和子容器的需求也是不一樣的,比如父容器中需要有事務的支援,會注入一些支援事務的擴充套件元件,而子容器中controller完全用不到這些,對這些並不關心,子容器中需要注入一下springmvc相關的bean,而這些bean父容器中同樣是不會用到的,也是不關心一些東西,將這些相互不關心的東西隔開,可以有效的避免一些不必要的錯誤,而父子容器載入的速度也會快一些。

3.父子容器如何使用?

父容器:parentfactory,內部定義了乙個string型別的bean:username->~~

子容器:childfactory,內部也定義了乙個string型別的bean:address->~~

@1:呼叫子容器的getbean方法,獲取名稱為username的bean,username這個bean是在父容器中定義的,而getbean方法是beanfactory介面中定義的,支援容器層次查詢,所以getbean是可以找到username這個bean的

@2:呼叫子容器的getbeannamesfortype方法,獲取所有string型別的bean名稱,而getbeannamesfortype方法是listablebeanfactory介面中定義的,這個介面中方法不支援層次查詢,只會在當前容器中查詢,所以這個方法只會返回子容器的address

為什麼需要PKI

為什麼需要pki 隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要pki,pki...

為什麼需要prototype

1.new object var newobj new object newobj.name keti newobj.color red newobj.changecolor function color 這種方法看上去很蠢,所以我們找到另一種方法 使用literal直接建立,看上去要優雅得多 2....

為什麼需要bootloader

受微控制器和arm7等小型cpu裝置程式設計思維的影響,開始對嵌入式linux和pc中存在bootloader bios的意義有了疑問 bootloader到底有沒有必要存在呢?答案是 大部分情況下是有必要的。首先,bootloader的作用是在硬體商店後執行的第一段軟體 也叫引導引導程式,是在作業...