應用程序上下文的典型部分:彈簧IOC:取決於上覆蓋懶惰-INIT
<bean id="option_A" class="class_a" lazy-init="true"/>
<bean id="option_B" class="class_b" lazy-init="true" depends-on="setup_bean"/>
<alias name="option_${OPTION_PROPERTY}" alias="thingChosen"/>
<bean id="setup_bean" class="class_setup" lazy-init="true"/>
這裏的概念是,如果OPTION_PROPERTY被設置爲 「A」,然後
<bean id="foo" class="whatever"><property name="bar" ref="thingChosen"/></bean>
將得到一個注入bar屬性的class_a實例,如果該屬性設置爲「B」,那麼它將獲得一個注入類b的實例,但是類b對setup_bean具有隱藏的依賴關係(哪個類缺少),所以必須先創建setup_bean。
發生什麼事是,如果OPTION_PROPERTY設置爲「A」,那麼setup_bean仍然被創建。我試過使用Spring 3.2.4.RELEASE,它是一致的。這似乎是我的錯誤或誤解。
如果一個bean是lazy-init,那麼不應該依賴於bean等待,直到這個bean在自己創建之前被懶惰地創建?
這是一個相當全面的證明。我會回去在我的代碼,看看我是否能辨別任何其他可以想到的原因我的「setup_bean」可稱爲發揮作用。我根本不認爲是有什麼關係呢?我正在使用這個技巧來有效地執行上下文中的if/else邏輯。通過文檔 –
nsayer
@nsayer掃描我沒有看到任何指向這樣一個關於混淆的結論。無論如何,它解決了'option_A'。 –
@nsayer我不知道你的'如果-else'適用什麼,但你可能會更好過使用'Profiles'。 –