Конфигурация Grails Spring бинов в разных файлах - PullRequest
0 голосов
/ 17 февраля 2010

Grails имеют кофиг для бобов под названием resources.groovy. И, как я понимаю из документов, он позволяет вам включить другой файл, используя 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 Ответ

1 голос
/ 17 февраля 2010

Вы пробовали:

println 'loading application config ...'


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

}

(это должно загрузить все файлы Groovy на пути к классам, заканчивающиеся на security.groovy и разобрать их в определения bean-компонентов).

Обновление: Нашел интересную ветку с этим сообщением в качестве ссылки, и я понимаю, что одним из приемов является использование муравья в scripts/_Events.groovy для копирования .groovy файл в classesDirPath dir, а затем просто используйте:

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

    // load some other spring-beans
        ...
}

Это похоже на хак, чтобы все заработало как на войне, так и при запуске run-app. Не уверен, как все «должно» быть сделано (если это даже имеет смысл).

...