你是正確的性質從grails.config.locations
文件(常規或屬性)讀取已讀取的僅主Config.groovy
後應用。你可以使用自定義的環境,並有東西像
environments {
ldapAuth {
foo.bar = 'something'
}
daoAuth {
foo.bar = 'something else'
}
}
,但你必須在生成WAR,你不能建立一個WAR,然後將其配置在運行時不同的環境來指定環境。
如果您有運行你的戰爭,那麼你可以做這樣的事情
def authType = System.getProperty('myapp.auth.type', 'dao')
// store authType as a real config option as well as a local variable
auth.type = authType
switch(authType) {
case 'dao':
foo {
bar = 'something'
}
break
case 'ldap':
foo {
bar = 'something else'
}
break
default:
println "Unrecognised auth type ${authType}"
}
或手動讀取.properties
文件了(而不是依靠某種方式來指定系統性能到Tomcat(或其他) grails.config.locations
)
def authProps = new Properties()
new File('/etc/myapp/auth.properties').withInputStream(authProps.&load)
def authType = authProps.getProperty('auth.type', 'dao')
auth.type = authType
// switch(authType) as before
一週皺紋 - 在log4j
閉包內你會發現你不能訪問authProps
變量(我不知道,我還沒有嘗試過)。但是在這個關閉中,你可以可以作爲config
訪問完整的配置,所以假如你有auth.type = authType
線我已經用在上面,你可以用config.auth.type
來代替。