2016-12-20 7 views
4

弊社では、異なるサーバー上で、autowiredコレクション内のBeanの順序が異なっていることを通知しましたが、同じマシン上では常に(各デプロイメント後に)同じです。どのようにSpringやClassLoaderが同等のBeanを配置するのですか?私たちの場合、私たちはいくつかのインタフェースの2つの実装を持っています。そしてその実装はある場所でコレクションを注入されます。そしてホスト1では、それは常に注入されたコレクションのA、Bであり、ホスト2では常にB、Aです。コレクションの春の豆の注文。決定論的?

したがって、それは決定論的だと思われますが、異なるマシンでは異なります。誰でもそれを確認できますか?それは何に依存していますか?私はそれに関する情報を見つけることができません。

EDIT:ls -Uを使用してファイルを並べ替えずに並べ替え、ホスト1のクラスがA、B、ホスト2の順番がB、Aであることに気付きました。誰かがこれが理由であることを確認できますか?そこで、私はなぜこの命令が異なるマシンで異なるのか検索します:)(クラスの.warは同じで、ネクサスリポジトリから直接ダウンロードします)

+0

同じ質問を再度尋ねるのではなく、既存の投稿に賞金を支払うことを検討してください。 –

答えて

-1

要するに、Spring Beanのインスタンス化のデフォルトシーケンスを知りたいとします。

依存性の解決、明示的な依存関係の設定(@DependsOn)などのようなBeanのインスタンス化には、多くのアルゴリズムが必要です。Beanがif ... elseに該当しない場合、デフォルトのインスタンス化シーケンスになります。ですから、Beanインスタンス化の順序は、コンフィグレーションを通じて暗示することはできますが、誰もデフォルトのBeanインスタンス化シーケンスを保証するものはありません。

Spring Beanのインスタンス化の既定のシーケンスについては、ドキュメントではっきりと述べていないため、私はそれを前もって知ることができますが、保証されていないので、このパターンに依存して論理的な実装をしないでください。

+0

これは従来のコードです。私はその命令に基づいて何かを実装していません。私はそれがどのように機能しているか知りたい。 – xianoss

+0

あなたは "それはどのように働いているのですか"という意味は私には "春の豆のインスタンス化のデフォルトのシーケンス"と答えた: – Avinash

+0

"これは2つの豆はオートスキャンによってインスタンス化され、それらのリファレンス?このautowiredコレクションは1つのリファレンスのみです。 – xianoss