如何在运行时在我的Grails Config.groovy中获得好东西?

在Config.groovy我看到这个:

// set per-environment serverURL stem for creating absolute links environments { production { grails.serverURL = "http://www.changeme.com" } } 

什么是在运行时访问的正确方法?

danb在正确的轨道上。 然而,如果您进行更好的导入,您的手指会变得更容易一些:

 import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH println CH.config.grails.serverURL 

在最近版本的Grails ConfigurationHolder已经被弃用了。

相反,你应该使用grailsApplication对象。

 grailsApplication.config.grails.serverURL 

如果在控制器或服务中,则使用grailsApplication对象的dependency injection。 例如

 class MyController{ def grailsApplication def myAction() { grailsApplication.config.grails.serverURL } 

请参阅如何在Grails 2.0中访问Grailsconfiguration?

这里是:

 import org.codehaus.groovy.grails.commons.ConfigurationHolder println ConfigurationHolder.config.grails.serverURL 

或者,在控制器和标签,显然这将工作:

 grailsApplication.config.grails.serverURL 

我需要BootStrap,所以选项1是我所需要的。

正如在一些评论中提到的,另一个选项是在Grails 2.0中添加的grails.utils.Holders类。 我更喜欢这种方法,因为你可以在没有configurationdependency injection的类中使用它。

 import grails.util.Holders class Foo { def bar() { println(Holders.config.grails.serverURL) } }