1

私は、XML とコンポーネント スキャンを組み合わせて使用​​し、依存関係を結び付ける方法を定義するアプリケーションに取り組んでいます。

アプリケーションの起動には約 1 ~ 3 秒かかりますが、これは多かれ少なかれ問題ありません。ただし、機能テストでは数百回起動します。あなたは残りを推測することができます...

起動時のパフォーマンスに関して、XML ベースのコンポーネント スキャンと @configuration Bean ベースの Spring アプリケーション コンテキストを比較できるパフォーマンス比較があるかどうか疑問に思います。

ここで数日間回答が得られない場合に、どちらがより優れたパフォーマンスを発揮するかを調べるために、小さなサンドボックス プロジェクトを作成する予定です。

よろしくお願いします。タマス

4

2 に答える 2

2

どのスタートアップコンフィギュレーションが高速であるかを心配するよりも、テストハーネスを確認する方が効果的かもしれません。

機能テストがすべて同じSpring構成で実行できる場合は、一度だけロードしてみませんか?ドキュメントでは、この特定の問題について説明しています:http ://static.springsource.org/spring/docs/current/spring-framework-reference/html/testing.html#testing-ctx-management

テキストコンテキストが読み込まれる回数を減らすと、全体的なテスト時間が短縮されます。また、一部のテストで個別のスタートアップが必要になる何らかの理由がある場合は、問題なく、独自のコンテキストでそれらをロードします。

于 2012-12-16T23:42:07.580 に答える
1

最後に、私は 10 分間を費やして、このトピックについて少しスパイクを行いました。

新しいプロジェクト (Spring テンプレート -> Simple Spring Utility Project) を作成し、少し変更しました。

テスト パッケージに 3 つのテスト ケースを追加しました。

  1. Bean 定義を含む XML の場所を取得する ClassPathXmlApplicationContext を使用した 1 つのテスト ケース。
  2. 1 行を含む XML の場所を取得する ClassPathXmlApplicationContext を使用した 1 つのテスト ケース:
  3. 構成 Bean を含むクラスを取得する AnnotationConfigApplicationContext を使用した 1 つのテスト ケース (最初のケースで使用される XML に相当する Java)。

各テスト ケースは、アプリケーション コンテキストを 1000 回作成しました。

結果:

  1. ~10 秒
  2. ~10 秒
  3. 〜6秒

つまり、AnnotationConfigApplicationContext を使用した @Configuration は、他の 2 つよりも約 40% 高速でした。

私は、この測定値が正確または正確であるとは決して思わないことに注意する必要があります. 依存関係の階層は単純すぎました (1 つの Bean のみ) が、それでも AnnotationConfigApplicationContext が 3 つの中で最速のソリューションであると期待しています。

于 2012-12-17T09:55:38.653 に答える