Y a-t-il une différence dans l'utilisation des annotations? Les deux annotations permettent d'utiliser plusieurs @Configuration
classes pour créer un ApplicationContext
. De leurs documents @ContextConfiguration
semble plus adapté à la configuration des tests et provient d'un artefact pour les tests (spring-test
), cependant, je n'ai pas trouvé la différence réelle.
Merci pour toute réflexion!
@Import
et @ContextConfiguration
sont pour différents cas d'utilisation et ne peuvent pas être utilisés pour l'interchangeabilité.
Le @Import
n'est utile que pour importer d'autres @Configuration
fichiers et n'est utile (et afaik) et fonctionnel que sur @Configuration
Des classes. Lors de la mise du @Import
sur une classe de test ce ne sera pas bon car il ne sera pas traité.
@Configuration
@Import(PersistenceConfig.class)
public class MainConfig {}
En utilisant @Import
peut être utile si, par exemple, vous avez désactivé l'analyse des composants pour @Configuration
cours ou vous avez besoin d'un @Configuration
classe à partir d'un package non couvert par votre analyse de composants.
Remarque: Il existe également @ImportResource
qui fait de même pour les anciens fichiers de configuration basés sur XML.
L'inverse est valable pour @ContextConfiguration
car cela n'est utile que sur les classes de test basées sur Spring (les tests ont été exécutés avec le SpringRunner
pour jUnit 4). Il est utilisé pour fournir au test les paramètres de configuration pour constituer la configuration de test. Il peut s'agir d'une collection de XML, javaconfig (ou une combinaison de ceux-ci).
@RunWith(SpringRunner.class)
@ContextConfiguration( {MainConfig.class, TestConfig.class})
public MyTest {}
Il permet également de spécifier quoi utiliser pour charger ces configurations (entre autres).