簡體   English   中英

如何避免在彈簧DI中創建依賴對象?

[英]how to avoid dependent object creation in spring DI?

我有A,B和C類。A具有B的引用,B具有C的引用。A <-B <-C。 假設我們正在使用spring在運行時注入對象。 當我們調用getBean(“ A”)時,spring將為所有依賴的類創建對象。 現在我的要求是告訴spring它不應在創建A對象時創建C類對象。 C僅在調用B或流到B時創建。

您將需要將bean顯式標記為延遲初始化。

   <!-- A bean definition with lazy init set on -->
   <bean id="..." class="..." lazy-init="true">
       <!-- collaborators and configuration for this bean go here -->
   </bean>

除非需要,否則容器不會初始化Bean。 請注意,如果加載了bean,則無論lazy-init的值如何,它也將加載其依賴的bean。

默認情況下,spring容器將初始化代碼中聲明的所有spring bean。 如果您不希望出現這種情況,則可以將此類bean配置為延遲初始化。 在您的情況下,如果將bean C定義為延遲初始化,則它將在初始化bean A時初始化(因為C依賴於A),而不是在容器/應用程序上下文/ bean工廠啟動時進行初始化。 我認為對於您提到的行為,沒有這樣的方法來定義這種初始化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM