2016-12-07 39 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中的應用程序類只有在主應用程序上下文之外的獨立運行插件時纔會運行。

相關問題