我有一些使用注释声明的Spring组件,我需要在Grails应用程序中使用它们。
我需要做的是使用resources.groovy中的BeanBuilder DSL从基础包中进行组件扫描,同时排除包内的一些组件。这就是我使用XML配置实现这一目标的方法:
<context:component-scan base-package="my.base.package" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
在docs(http://grails.org/doc/latest/guide/spring.html#theBeanBuilderDSLExplained中,使用Spring命名空间一节)是关于如何在BeanBuilder中使用Spring命名空间的一些提示。例如,这可以有效地导入my.base.package中的所有组件:
xmlns context:"http://www.springframework.org/schema/context"
context.'component-scan'('base-package': "my.base.package")
但我不知道如何使用BeanBuilder DSL语法通过嵌套context:exclude-element
指定排除过滤器。我尝试了以下,但无济于事:
xmlns context:"http://www.springframework.org/schema/context"
context.'component-scan'('base-package': "webcat.purchaseorder") {
context.exclude-filter(type:"annotation", expression:"org.springframework.stereotype.Controller")
}
有人能指出我正确的方向吗?我也尝试将xml放在一个文件中,然后通过importBeans
导入它,这确实有用,但我真的很想直接使用DSL语法。
答案 0 :(得分:1)
尝试
context。&#34; exclude-filter&#34;(type:&#34; annotation&#34;,expression:&#34; org.springframework.stereotype.Controller&#34;)