我们目前使用配置文件来存储应用程序设置。我想知道是否可以将这些设置存储在数据库中,如果可以,如何实现这一点?
问候
答案 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)