在Grails应用程序的数据库中存储和使用应用程序配置设置?

时间:2012-01-10 17:20:10

标签: grails configuration gorm

我们目前使用配置文件来存储应用程序设置。我想知道是否可以将这些设置存储在数据库中,如果可以,如何实现这一点?

问候

2 个答案:

答案 0 :(得分:2)

您可以在数据库中存储您想要的任何内容,并使用Domain类将其读出。如果您希望能够在不重新部署新代码的情况下对事物进行更改,这将非常有用。但是要意识到每次访问该属性时都会产生数据库命中。

您可以使用以下命令设置ConfigurationService:

ConfigurationService {
    static def configurationValues

    def getConfigurationValues() {
        if(configurationValues == null) {
            refreshConfigurationValues()
        }
        configurationValues
    }

    def refreshConfigurationValues() {
        configurationValues = //go get the values out of the database
    }
}

然后您可以添加控制器/动作以在必要时强制刷新

ConfigurationController {

    def configurationService

    def refreshConfiguration = {
        configurationService.refreshConfigurationValues()
        render "Ahhh... That's refreshing :)"
    }
}

现在您可以通过调用以下内容来刷新配置值:“http:// yoururl / appName / configuration / refreshConfiguration”

答案 1 :(得分:1)

可以使用BootStrap.groovy完成此操作。因此,根据Jarred的回答,创建一个您想要存储的配置数据的域类,然后在BootStrap.groovy文件中放置这些值。这样做的是,如果配置值不存在,它将创建它,如果存在则不会执行任何操作。

然后,您可以使用域类访问配置值。我假设你想要这样做,因为grailsApplication.config ...有时会变得不守规矩。

Domain-Class MyConfig.groovy:

class MyConfig {
  String type
  String name
  String value
}

BootStrap.groovy中:

def myConfig = MyConfig.findByName("path") ?: new MyConfig(
    type: "Path"
    name: "path"
    value: "/var/tmp"
).save(failOnError: true)