本当にあなたの問題があなたの質問から分かりませんでした。 Beanを初期化する順序を変更するか、設定で定義されている順番でBeanの名前を取得しますか?
1.上記の方法でBeanの初期化の順序を設定するとどういう意味ですか?
ApplicationContext
は、アプリケーションのBeanのインスタンス化、構成および配線を担当します。 ApplicationContext
は、ライフサイクルの初期段階で設定(XML、注釈、Javaコード設定など)を読み込み、それらのBeanをインスタンス化します。 Beanを初期化する順序について話しているときは、ApplicationContext
でインスタンス化されるBeanと、後でインスタンス化されるBeanを意味します。あなたは私たちがA
のインスタンスが必要B
をインスタンス化するために見ることができるように
class A {
}
class B {
private A a;
public B(A a) {
this.a = a;
}
}
:たとえば、あなたはB
は、以下のようにA
に依存する二つのクラスA
とB
を持っている場合。現在のBeanが依存する
DEPENDSON
豆。指定されたBeanは、このBeanの前にコンテナによって作成されることが保証されています。 (DependsOn Documentation)
BeanPostProcessor
BeanPostProcessor
は、あなたがそれがコンテナによってインスタンス化された後に変更することができます。私はあなたがBeanポストプロセッサーで望むものを達成できるとは思わない。
PriorityOrderedをPriorityOrdered Docs
はOrderedインタフェースの拡張です。ドキュメントから:
は、コレクションなどで注文可能なオブジェクトで実装できるインターフェイスです。実際の順序は、優先順位として解釈される であり、最初のオブジェクト(最も低い値は オーダーの値)が最も高い優先順位を持ちます。
このインターフェイスの優先度マーカーは、 PriorityOrderedです。 PriorityOrderedオブジェクトによって表される順序値 は、通常の順序で表される同じ順序値の前に常に適用されます。 オブジェクト。 PriorityOrdered
オブジェクトによって表さ 順序値は常に普通順序オブジェクトで表さ 同じ順序値の前に適用されます。優先順位を発現Ordered
インタフェースのPriorityOrdered
拡張のドキュメントから
。これは、最初に であるオブジェクトに使用される であり、残りのオブジェクトを取得することなく、優先順位オブジェクトを最初に認識することが重要です。典型的な例:ApplicationContext
の郵便番号 ポストプロセッサ
また、私はこのインターフェースからもあなたが望むものを達成することはできないと思います。
2. appContext.getBeanDefinitionNames()を使用してBean名の取得順序を変更することはできますか?
getBeanDefinitionNames()
メソッドは、現在のファクトリ(Docs)で定義されているすべてのBeanの名前を含む文字列の配列を返します。