2016-12-07 21 views
1

我在grails 3.1.10插件的src/groovy/my/package中声明了多个@Components,并通过在grails中添加以下内容将包名添加到组件扫描中 - app/init/application.groovy:将包添加到Grails 3中的组件扫描的正确方法

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

只要我运行插件本身,它就能正常工作。当我包括我的插件在我的应用程序的build.gradle将其添加:

compile project(':my-plugin') 

并运行应用程序,在我-插件声明的bean没有得到正确了有线,它们不能被发现。

什么是从Grails插件添加自定义组件/豆到Grails应用程序组件扫描的正确方法?

回答

3

自定义组件应该在插件声明中

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

声明(pluginName.groovy的src/base.package内),这将使得与注释可用your.package春天上下文中声明的所有组件,也在主应用程序中。

grails-app/conf/init/application.groovy中的应用程序类只有在主应用程序上下文之外的独立运行插件时才会运行。

相关问题