質問

Beanロードの順序が依存関係と推移的な依存関係によって暗黙的に決定されるという事実を知っています。

想像してみて、別のAwarebeansの別のセットに適用するいくつかの種類のメタデータを提供する注釈付きBeanのセットがあります。それで、N Beanからすべてのメタデータを収集した後にのみ、AwoyBeansを処理することができます。あなたは通常この種のもののためにorg.springframework.beans.factory.config.BeanPostProcessorを使用します。注文に対処する方法は? depends-onを設定しても、ロードオーダーの依存関係を明示的に超えてはいけないと思います。

適用されているBeanPostprocessorsの順序を決定するだけでなく、Beanの順序ではないインターフェイスorg.springframework.core.Orderedがあります。

org.springframework.beans.factory.config.BeanFactoryPostProcessorを使用できますが、Beanの定義にはBeanのインスタンス化前の情報がありません。たとえば、beanDef.getBeanClass()はBeanクラス名などを返します。

あなたが私が欲しいものをする方法を考えることができるその他の方法は?

役に立ちましたか?

解決 2

ClassLoaderによるorg.springframework.beans.factory.config.BeanFactoryPostProcessorとロードクラスを使用して、アノテーションをつかむことができるように解決しました。なぜならSpringがクラスロードになっていると、Bean ClassLoaderがすでにロードされているかどうかをチェックすると、そのクラスがロードされているかどうかを確認します。それ以外の場合はロードします。

他のヒント

a)BeanPostProcessorにすべてのメタデータBeanを注入します。

b)あなたのPostProcessorは起動時にアプリケーションコンテキストからすべてのメタデータBeanを積極的に取得させます。

毎回長所と短所を持っていますが、効果は同じです.BeanPostProcessor PostConstructionの後、すべてのメタデータBeanはすでに既に延期されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top