Spring @Configuration et & lt; context: component-scan / & gt;

J'ai un scénario la configuration de la Sécurité Printemps sur Jetty embarqué qui semble être un peu résolu si j'utilise JavaConfig pour configurer le serveur Jetty.

Comme un résultat, il est à la recherche comme JavaConfig plutôt que de XML peut être la meilleure option pour les gros morceaux du projet. Cependant, il y a quelques subtilités dans les espaces de noms XML, comme <context:component-scan /> qui ne sont pas facilement disponibles dans un @Configuration réglage.

J'ai découvert que ApplicationContextAware est à l'honneur pour @Configuration classes, donc la suite est possible

@Configuration
public class FooConfig implements ApplicationContextAware {
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        ((AnnotationConfigApplicationContext) applicationContext).scan("org.example");
    }
}

L'alternative, qui est documentéc'est d'avoir le @Configuration classe utiliser un @ImportResource d'annotation et de tirer dans un fichier XML existant:

@Configuration
@ImportResource("applicationContext-withComponentScan.xml")
public class BarConfig {}

Je suppose que la question est "Est-ce la mauvaise forme de l'abus de ApplicationContextAware de cette façon, ou est-il vraiment pas d'abus"? Quelque chose ne se sent bizarrement sale à propos de l'approche, donc je ne vais pas être surpris si le Printemps gars l'avait recouvert d'une certaine façon ou d'une autre que je n'ai pas repéré.

Pour les intéressés, le problème est lié à la numérisation d'un Maillot de l'installation avec @Resource et @Provider classes que je préfère ne pas avoir à gérer manuellement les entrées dans une classe/XML de configuration.

source d'informationauteur ptomli