2016-12-07 8 views
1

Я объявил несколько @Components в src/groovy/my/package плагина grails 3.1.10 и добавил имя пакета в проверку компонентов, добавив следующее в grails- приложение/INIT/application.groovy:Правильный способ добавления пакетов в проверку компонентов в Grails 3

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

Он хорошо работает до тех пор, как я бегу сам плагин. Когда я включаю свой плагин, добавив его в build.gradle моего приложения:

compile project(':my-plugin') 

и запустить приложение, бобы, объявленные в моем-плагин не получить проводной правильно больше, они не могут быть найдены.

Каков правильный способ добавления пользовательских компонентов/компонентов из графического адаптера Grails в приложение Grails для приложения?

ответ

3

Пользовательские компоненты должны быть объявлены в декларации плагина (pluginName.groovy внутри Src/base.package) внутри

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) 
    } 
}} 

это сделает все компоненты, объявленные с аннотацией в your.package доступной в контексте весеннего, а также в основном приложении.

Класс приложения внутри grails-app/conf/init/application.groovy выполняется только тогда, когда плагин запускается автономно, вне основного контекста приложения.