Spring bean的Grails配置在不同的文件中

时间:2010-02-16 22:21:51

标签: java grails groovy maven config

Grails有一个叫做resources.groovy的春豆的cofig。正如我从文档中理解的那样,它允许您使用loadBeans(%path%)

包含另一个文件

我试过这个:

println 'loading application config ...'


// Place your Spring DSL code here
beans = {
    loadBeans("classpath:security") //i'm tried with "spring/security" and "spring/security.groovy" also

}

但是当grails运行时,它会记录以下错误:

Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Error evaluating bean definition script: class path resource [security] cannot be opened because it does not exist
Offending resource: class path resource [security]; nested exception is java.io.FileNotFoundException: class path resource [security] cannot be opened because it does not exist
 at grails.spring.BeanBuilder.loadBeans(BeanBuilder.java:470)
 at grails.spring.BeanBuilder.loadBeans(BeanBuilder.java:424)
 at resources$_run_closure1.doCall(resources.groovy:13)
 at resources$_run_closure1.doCall(resources.groovy)
 ... 45 more

脚本security.groovy存在于grails-app/conf/spring,并由 grails maven插件编译为target/classes/security.class。 目录target/resources/spring目前为空

我如何配置Grails或grails-maven-plugin来复制这个配置文件,而不是将它编译成类?

P.S。当我尝试在grails.config.locations = [ %path% ]内使用conf/Config.groovy包含配置脚本时,这个问题也出现了,我的groovy脚本编译成了类,因此,grails配置构建器无法找到它们:(

1 个答案:

答案 0 :(得分:1)

<击> 你试过了吗?

println 'loading application config ...'


// Place your Spring DSL code here
beans = {
    loadBeans("classpath:*security.groovy") 

}

(这应该加载以security.groovy结尾的类路径上的所有Groovy文件,并将它们解析为bean定义)。

更新:找到interesting thread并以this message作为参考,我的理解是,一个技巧是在scripts/_Events.groovy中使用ant来复制{{1}文件到.groovy目录然后只需使用:

classesDirPath

这看起来像是在战争和运行run-app时都可以运行的黑客。不确定应该如何“应该”完成(如果这有意义的话)。