代码之家  ›  专栏  ›  技术社区  ›  Igor Artamonov

不同文件中SpringBeans的grails配置

  •  0
  • Igor Artamonov  · 技术社区  · 15 年前

    圣杯里有一种叫春豆的咖啡 resources.groovy . 据我从文档中了解,它允许您使用loadbeans(路径%)包含另一个文件。

    我试过这样做:

    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或GrailsMaven插件来复制这个配置文件,而不是将其编译成类?

    另外,当我尝试使用 grails.config.locations = [ %path% ] 里面 conf/Config.groovy ,我的groovy脚本编译成类,因此grails config builder找不到它们:(

    1 回复  |  直到 15 年前
        1
  •  1
  •   Pascal Thivent    15 年前

    你试过了吗?

    println 'loading application config ...'
    
    
    // Place your Spring DSL code here
    beans = {
        loadBeans("classpath:*security.groovy") 
    
    }
    

    (这应该加载类路径上以 security.groovy 并将它们解析为bean定义)。

    更新: 找到一个 interesting thread 具有 this message 作为参考,我的理解是,一个技巧是在 scripts/_Events.groovy 抄袭 .groovy 文件到 classesDirPath 然后简单地使用:

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

    不过,这看起来像一个黑客,在战争和运行跑步应用程序时都能让事情正常运行。不知道“应该”怎么做(如果这有道理的话)。