web-dev-qa-db-ja.com

Springでの@Importと@ContextConfiguration

アノテーションの使い方に違いはありますか?どちらのアノテーションでも、複数の@Configurationクラスを使用してApplicationContextを作成できます。彼らのドキュメントから@ContextConfigurationはテスト構成により適しているようで、テストのアーティファクト(spring-test)に由来しますが、実際の違いはわかりません。

ご意見ありがとうございます!

13

@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 {}

また、これらの構成をロードするために何を使用するかを指定することもできます(特に)。

7
M. Deinum