Grails:使用配置文件初始化变量

时间:2014-07-23 18:35:16

标签: grails groovy configuration initialization

我只是想知道是否可以从配置文件(如config.groovy或其他配置文件)中设置Grails控制器中变量的值?

例如,我的控制器如下:

class WebsiteController {
    def show(){
        String user_name = "value to be fetched from configuration file"
    }
}

在这里,我想从配置文件中设置user_name的值。我不知道该怎么做。 我的老人给了我这个要求。我在网上搜索但找不到相关内容。如果有可能,请告诉我方法。 感谢

3 个答案:

答案 0 :(得分:4)

以下是添加到Config.groovy的属性示例:

environments {
  development {
    tipline.email.address="joe@foo.us"
    grails.logging.jul.usebridge = true
  }
  staging {
    tipline.email.address="mailinglist@foo.us"
    grails.logging.jul.usebridge = true
  }
  production {
    tipline.email.address="mailinglist@foo.us"
    grails.logging.jul.usebridge = false
    // TODO: grails.serverURL = "http://www.changeme.com"
  }
}

要在您的代码中访问它们:

    println("Email :"+grailsApplication.config.tipline.email.address)

答案 1 :(得分:1)

属性是properties =)

Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
    properties.load(it)
}

def runtimeString = 'a'
assert properties."$runtimeString" == '1'
assert properties.b == '2'

取自Get values from properties file using Groovy

答案 2 :(得分:1)

另一种可能性是使用property override configuration

将参数注入控制器
// Config.groovy:

website.user = "me"

beans {
    '<replace by package>.WebsiteController' {
            userName = website.user
    }
}


// Controller:

class WebsiteController {
    String userName

    def show(){
        //.. use userName ..
    }
}

在这种情况下,您不需要grailsApplication,并且您不需要在控制器中对配置路径进行硬编码。较少的依赖性使测试更容易。 :)