2012-11-26 22 views

回答

5

如果我理解的很好,您希望在战争之外将Grails配置外化。 您可以在Config.groovy中这样

grails.config.locations = ["file:path/to/your/Configfile.groovy"] 

定义外部配置,请参阅Grails的文档4.4 Externalized Configuration

+0

很高兴为你效劳,不要忘记接受答案,谢谢! –

3

与定义你的外部的Grails的配置:

grails.config.locations = ["file:some/path/to/Config.groovy"] 

然后重新加载它们在运行时,你可以使用这样的代码:

def config = grailsApplication.config 
def locations = config.grails.config.locations 

locations.each { 
    String configFileName = it.split('file:')[0] 
    config.merge(new ConfigSlurper().parse(new File(configFileName).text)) 
} 

我在管理员保护的控制器中有上述代码。

1

走到房子周围为这一个,谢谢格雷格

对于服务或Groovy的src的文件,你可以使用:

import org.springframework.context.ApplicationContext 
ApplicationContext ctx = (ApplicationContext) org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().getAttribute(org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes.APPLICATION_CONTEXT); 
def grailsApplication = ctx.getBean("grailsApplication") 
ConfigObject config = ctx.getBean(GrailsApplication).config 
def locations = config.grails.config.locations 
locations.each { 
    String configFileName = it.split("file:")[1] 
    config.merge(new ConfigSlurper().parse(new File(configFileName).text)) 
} 

而对于抽象类,通常由控制器扩展:

import grails.util.Holders 
def config = Holders.config 
def locations = config.grails.config.locations 
locations.each { 
    String configFileName = it.split("file:")[1] 
    config.merge(new ConfigSlurper().parse(new File(configFileName).text)) 
}