2014-12-06 3 views
0

Я пытаюсь настроить приложение Spring с помощью Groovy. У меня есть несколько модулей, поэтому весь контекст разбивается на несколько файлов .groovy.Spring Groovy Config: импортировать свойства ConfigSlurper

Я использую suggested method (раздел Использование внешних свойств) для чтения свойства из внешнего файла с помощью ConfigSlurper, поэтому в моей основной context.groovy есть props объект определяется и используется:

def props = new ConfigSlurper("dev").parse("app.properties")  
beans { 
    someBean(SomeBean) { 
     commonShinyProperty = props.common.shiny 
    } 
} 

Где app.properties является:

common { 
    shiny = true 
} 

То, что я пытаюсь сделать, это повторное использование такие же свойства sourc е (props объект) в другом контексте части anotherContext.groovy - что-то вроде:

importBeans('classpath:context.groovy') 
beans { 
    anotherBean(AnotherBean) {   
     commonShinyProperty = props.common.shiny 
    } 
} 

Этот код не работает, как props не доступен здесь, только бобы из context.groovy. Даже если он определен как компонент, приложение не может начинать с таких ошибок, как Cannot get property 'shiny' on null object или No such property: for class...

Просьба указать, возможна ли такая конфигурация. Заранее спасибо!

ответ

1

Файлы свойств загружаются через org.springframework.boot.context.config.ConfigFileApplicationListener, это происходит до того, как контекст приложения действительно загружен.

Я сделал заказ GroovyPropertySource для загрузки application.groovy на пути к классу, поэтому он будет доступен для контекста приложения через тот же самый Environment.getProperty(), когда ему нужно его настроить.

Заканчивать https://github.com/davidiamyou/spring-groovy-config

Вы должны быть в состоянии сделать что-то вроде

beans { 
    anotherBean(AnotherBean) {   
     commonShinyProperty = '${common.shiny}' 
    } 
} 
+0

Спасибо, @davidiamyou. –

Смежные вопросы