首页 文章

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

提问于
浏览
0

Grails有一个名为 resources.groovy 的 Spring beans 的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来复制这个配置文件,而不是将它编译成类?

附:当我尝试在 conf/Config.groovy 中使用 grails.config.locations = [ %path% ] 包含配置脚本时,这个问题也出现了,我的groovy脚本编译成类,因为它,grails配置生成器找不到它们:(

1 回答

  • 1

    你试过了吗:
    println'加载应用程序配置...'

    //将Spring DSL代码放在这里
    beans = {
    loadBeans( “类路径:* security.groovy”)

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

    Update: 找到interesting thread,其中this message作为参考,我的理解是一个技巧是使用 scripts/_Events.groovy 中的ant将 .groovy 文件复制到 classesDirPath 目录,然后简单地使用:

    beans = {
        // load spring-beans for db-access via spring-jdbc-template
        loadBeans('security.groovy')
    
        // load some other spring-beans
            ...
    }
    

    这看起来像是在战争和运行run-app时工作的黑客 . 不确定应该如何“应该”完成(如果这是有道理的) .

相关问题