2012-09-29 46 views
0

我意識到bean加載的順序是由依賴關係和傳遞依賴關係隱式確定的。在沒有明確配置的情況下更改bean後處理順序

想象一下,你有一組註釋的bean爲您提供某種元數據要應用到另一組AwareBeans的。因此,只有在收集了N個Bean的所有元數據後,纔可以在後處理AwareBeans。你通常使用org.springframework.beans.factory.config.BeanPostProcessor這種東西。如何處理訂單?我認爲,即使設置depends-on明確不會優先於加載順序依賴關係,對吧?

有一個接口org.springframework.core.Ordered,僅僅確定BeanPostProcessor的量級上被施加,但不是豆的順序。

我可以使用org.springframework.beans.factory.config.BeanFactoryPostProcessor但bean定義並沒有豆實例化之前的足夠信息。例如beanDef.getBeanClass()回報bean類名等

是,任何其他方式,你能想到的,怎麼做我想要什麼?

回答

0

我用org.springframework.beans.factory.config.BeanFactoryPostProcessor和裝載類加載器通過,這樣我可以使用反射來抓住註解解決它。我認爲它不應該破壞任何東西,因爲之後Spring將要加載類加載器時,類加載器將檢查類是否已加載,如果是,則不會加載它。否則它加載它。

0

您可以:

一)注入你的所有元數據豆你BeanPostProcessor

b)使後處理器在啓動時主動從應用程序上下文中獲取所有元數據bean。

每種方法都有利弊,但效果是一樣的:後BeanPostProcessor postconstruction,每一個元數據bean將已經過postconstructed。

+0

我故意提到「沒有明確的配置」,這意味着其他的話:「我做一個庫,要由第三方使用的」)沒有用的......至於B),它不會使由於存在bean依賴關係而有意義... – lisak

相關問題