2016-12-07 4 views
1

J'ai déclaré plusieurs @Components dans src/groovy/my/package d'un greffon grails 3.1.10 et ajouté le nom du paquet au balayage des composants en ajoutant ce qui suit dans grails- app/init/application.groovy:Façon correcte d'ajouter des paquets à l'analyse des composants dans Grails 3

@Override 
Collection<String> packageNames() { 
    super.packageNames() + ['package.from.plugin'] 
} 

Il fonctionne bien aussi longtemps que je courais le plug-in lui-même. Quand j'inclus mon plug-in en l'ajoutant dans le build.gradle de ma demande:

compile project(':my-plugin') 

et exécuter l'application, les haricots déclarés dans mon plug-in ne sont pas câblés correctement plus, ils ne peuvent pas être trouvés. Quelle est la bonne façon d'ajouter des composants/haricots personnalisés de Grails Plugin à Grails analyse des composants de l'application?

Répondre

3

Les composants personnalisés doivent être déclarés à l'intérieur

Closure doWithSpring() {{-> 
    xmlns context:"http://www.springframework.org/schema/context" 


    context.'component-scan'('base-package': 'your.package') { 
     context.'include-filter'(
       type:  'annotation', 
       expression: Component.canonicalName) 
    } 
}} 

dans la déclaration de plug-in (pluginName.groovy dans src/base.package) cela fera tous les composants déclarés avec l'annotation dans your.package disponibles dans le contexte du printemps, aussi dans l'application principale.

La classe d'application à l'intérieur de grails-app/conf/init/application.groovy s'exécute uniquement lorsque le plugin est exécuté de manière autonome, en dehors du contexte d'application principal.