回答
您可以存储任何你想要的数据库,并使用域类读出来。如果您希望能够在无需重新部署新代码的情况下对事物进行更改,这一点尤其有用。但要意识到,每次访问该属性时都会触发数据库。
您可以设置一个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”
这可以用BootStrap.groovy完成。因此,按照Jarred的回答,创建一个您想要存储的配置数据的域类,然后在BootStrap.groovy文件中,输入这些值。这样做是如果配置值不存在,它会创建它,如果它存在将不会做任何事情。
然后,您可以使用域类访问您的配置值。我假设你想这样做,因为grailsApplication.config ...有时会变得不守规矩。
域级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)
我同意这个初始化可以在BootStrap.groovy中完成。但是,在那里创建配置选项并不能解决问题,因为您必须部署新代码才能更改任何值。这与使用Config.groovy的陷阱是一样的。另外,你必须确定你所在的环境(这并不难),但基本上与Config.groovy提供的相同。 – 2012-01-11 14:05:33
- 1. 非数据库应用程序的GAE数据存储设置
- 2. 在应用程序中存储iPhone应用程序设置
- 3. 在数据库中存储应用程序设置
- 4. 如何在应用程序库中缓存/存储应用程序设置
- 5. 在Web应用程序的数据库上存储设置?
- 6. 存储配置桌面应用程序
- 7. 存储配置设置应用程式
- 8. 如何为php库存应用程序设置数据库表
- 9. .NET - 存储应用程序设置
- 10. 应用程序设置存储
- 11. Web应用程序设置存储
- 12. 如何存储应用程序设置?
- 13. Grails应用程序的Log4j socketappender配置?
- 14. 在Sharepoint中存储应用程序特定的配置数据?
- 15. 用于存储应用程序配置数据的LDAP vs数据库
- 16. 如何存储Web应用程序的配置设置?
- 17. Grails,存储应用程序自己的设置(单身域类?)
- 18. 为Elixir程序包设置默认的应用程序配置
- 19. Django应用程序中断使用Heroku的数据库设置
- 20. 在设置应用程序中创建应用程序设置
- 21. 为应用程序设置
- 22. 在Java应用程序中保存和更新配置设置
- 23. Linux配置数据:存储应用程序设置的标准方式?
- 24. 如何最好地为Android应用程序设置存储库?
- 25. 在MVVM应用程序中存储应用程序设置/状态的地方
- 26. .net跨应用程序配置设置
- 27. 配置ADP应用程序以使用不同的数据库...?
- 28. 的Node.js:使用process.env存储整个应用程序的配置
- 29. 如何设置Resque使用的应用程序数据库?
- 30. 数据库连接在应用程序配置中的作用
在我的情况下,有一个一堆的配置设置,我宁愿在数据库内。例如用于发送电子邮件的用户名/密码组合,用于加密哈希的秘密密码等。我知道我可以缓存特定的域类,但是当您声明我希望重新初始化缓存时,只要我进行更改配置并尽可能跳过数据库命中。 – Marco 2012-01-10 17:40:13
但这就是Jarreds提案所做的。 – david 2012-01-10 21:09:26
@david我添加了代码来为Marco的评论提供一个示例。 – 2012-01-11 14:01:18