アノテーションの使い方に違いはありますか?どちらのアノテーションでも、複数の@Configuration
クラスを使用してApplicationContext
を作成できます。彼らのドキュメントから@ContextConfiguration
はテスト構成により適しているようで、テストのアーティファクト(spring-test
)に由来しますが、実際の違いはわかりません。
ご意見ありがとうございます!
@Import
および @ContextConfiguration
はさまざまな使用例であり、互換性を保つために使用することはできません。
@Import
は、他の@Configuration
ファイルをインポートする場合にのみ役立ち、@Configuration
クラスでのみ機能します。 @Import
をテストクラスに置くと、処理されないので良くありません。
@Configuration
@Import(PersistenceConfig.class)
public class MainConfig {}
@Import
の使用は、たとえば、@Configuration
クラスのコンポーネントスキャンを無効にした場合、またはコンポーネントスキャンの対象外のパッケージから@Configuration
クラスが必要な場合に役立ちます。
注:また、古いXMLベースの構成ファイルに対して同じことを行う @ImportResource
もあります。
逆は@ContextConfiguration
に対して有効です。これは、Springベースのテストクラス(jUnit 4のSpringRunner
を使用して実行されたテスト)でのみ有用であるためです。これは、テスト構成を構成するテストを構成パラメーターとともに提供するために使用されます。これは、XML、javaconfig(またはそれらの組み合わせ)のコレクションにすることができます。
@RunWith(SpringRunner.class)
@ContextConfiguration( {MainConfig.class, TestConfig.class})
public MyTest {}
また、これらの構成をロードするために何を使用するかを指定することもできます(特に)。