外化grails中的属性

时间:2012-10-10 19:50:28

标签: grails

我试图将Grails中的一些自定义属性外部化。

我找不到如何外化一些字符串属性并在我的代码中使用它们的明确方法。 任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

您必须在config.groovy中指定外部配置文件的位置。

例如:

if (!grails.config.locations || !(grails.config.locations instanceof List)) {
    grails.config.locations = []
}

// Internal Jetty: config-files are locates inside the /web-app/WEB-INF directory
if( GrailsUtil.isDevelopmentEnv() ) {
    def dir = System.properties["base.dir"]
    def f1 = "${dir}" + File.separator + "web-app" + File.separator + "WEB-INF" + File.separator + "${appName}-config.groovy"
    grails.config.locations << "file:${f1}"
}

// TIER Tomcat: config-files are locates inside Tomcat's conf-directory
else if( System.properties["catalina.home"] ) {
    def dir = System.properties["catalina.home"]
    def f1 = "${dir}" + File.separator + "conf" + File.separator + "${appName}-config.groovy"
    grails.config.locations << "file:${f1}"
}

// JBOSS, Glassfish etc
else {
    //
}

// Further choices: command line argument (-D{$appName}.config.location=xxx)
if( System.properties["${appName}.config.location"] ) {
  grails.config.locations << "file:" + System.properties["${appName}.config.location"]
}

因此在本地开发中,配置文件位于WEB-INF目录下。 在走向生活的过程中,您可以选择放置配置文件的位置。 如果需要,您可以以相同的方式调整代码以适用于config.properties。