回答
您可以存储任何你想要的数据库,并使用域类读出来。如果您希望能够在无需重新部署新代码的情况下对事物进行更改,这一点尤其有用。但要意识到,每次访问该属性时都会触发数据库。
您可以设置一个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. 在应用程序中存储iPhone应用程序设置
- 2. 如何在应用程序库中缓存/存储应用程序设置
- 3. 在Web应用程序的数据库上存储设置?
- 4. 存储配置设置应用程式
- 5. 存储配置桌面应用程序
- 6. 如何存储应用程序设置?
- 7. .NET - 存储应用程序设置
- 8. 用于存储应用程序配置数据的LDAP vs数据库
- 9. 如何存储Web应用程序的配置设置?
- 10. 为Elixir程序包设置默认的应用程序配置
- 11. Django应用程序中断使用Heroku的数据库设置
- 12. 在设置应用程序中创建应用程序设置
- 13. 如何最好地为Android应用程序设置存储库?
- 14. 在MVVM应用程序中存储应用程序设置/状态的地方
- 15. .net跨应用程序配置设置
- 16. 配置ADP应用程序以使用不同的数据库...?
- 17. 数据库连接在应用程序配置中的作用
- 18. 在grails中为应用程序使用两个数据库
- 19. 存储Windows应用程序应用程序配置的最佳方式
- 20. RSpec测试不使用rails应用程序数据库配置
- 21. MIX应用程序的配置文件为OTP应用程序
- 22. C#应用程序配置数据
- 23. 为iPhone应用程序存储数据
- 24. 使用QSettings存储qt应用程序的设置
- 25. 添加应用程序配置为Windows窗体应用程序
- 26. 发布的应用程序 - 应用程序设置配置检查
- 27. 如何为Django应用程序配置数据库权限?
- 28. 为symbian应用程序设置应用程序图标
- 29. 为iPad应用程序创建应用程序内设置
- 30. 为Facebook应用程序设置“人类”应用程序名称
在我的情况下,有一个一堆的配置设置,我宁愿在数据库内。例如用于发送电子邮件的用户名/密码组合,用于加密哈希的秘密密码等。我知道我可以缓存特定的域类,但是当您声明我希望重新初始化缓存时,只要我进行更改配置并尽可能跳过数据库命中。 – Marco 2012-01-10 17:40:13
但这就是Jarreds提案所做的。 – david 2012-01-10 21:09:26
@david我添加了代码来为Marco的评论提供一个示例。 – 2012-01-11 14:01:18