Je gère un projet avec deux ensembles de packages principaux, le projet utilise Spring et Spring MVC, l'un de ces packages contient plusieurs contrôleurs et est analysé à l'aide de la configuration XML (<context:component-scan />
).
Le problème est qu'il y a une seule classe dans l'autre package (non scannée), et j'ai besoin que cette classe soit scannée, mais seulement cette classe et rien d'autre dans le package. Je ne peux pas changer son package maintenant car ce serait trop risqué maintenant.
Alors, existe-t-il un moyen de le faire en utilisant annotations ou XML?
Ajoutez simplement un haricot à votre contexte, par ex.
<bean class="my.package.MyClass" />
Ce que @Bart a dit pour XML.
Si vous devez extraire cette classe à l'aide d'annotations, ajoutez ce qui suit à l'un de vos @Configuration
Des classes
@ComponentScan(
basePackageClasses = YourClass.class,
useDefaultFilters = false,
includeFilters = {
@ComponentScan.Filter(type = ASSIGNABLE_TYPE, value = YourClass.class)
})
En plus de la méthode décrite par Emerson Farrugia, il existe une solution moins détaillée qui est prise en charge depuis Spring Framework 4.2 comme mentionné dans la documentation ici .
Depuis Spring Framework 4.2,
@Import
prend également en charge les références des classes de composants régulières, analogues àAnnotationConfigApplicationContext.register
méthode. Ceci est particulièrement utile si vous souhaitez éviter l'analyse des composants, en utilisant quelques classes de configuration comme points d'entrée pour définir explicitement tous vos composants.
Votre exemple deviendrait donc simplement:
@Import(YourClass.class)