我想将属性存储在数据库表中,并在Config.groovy
. 例如,我想在 Config.groovy 中放入一个默认的电子邮件地址:
app.send.report.to = 'me@example.com'
然后能够在数据库表(key
,value
列...)中覆盖它。
是否有插件(或 grails 中的功能)来执行此操作?
我想将属性存储在数据库表中,并在Config.groovy
. 例如,我想在 Config.groovy 中放入一个默认的电子邮件地址:
app.send.report.to = 'me@example.com'
然后能够在数据库表(key
,value
列...)中覆盖它。
是否有插件(或 grails 中的功能)来执行此操作?
有动态配置插件。
它将配置属性存储在 ConfigProperty 域中,并使用以下方式合并来自Config.groovy
和来自数据库的属性:
grailsApplication.config.merge(configObject)
您可能想查看插件源代码。如果插件不适合你,你可以实现类似的东西。
当您拥有用于编辑配置属性的 UI 时,此方法很有用。
Grails 没有我所知道的从数据库中覆盖配置值的功能,但它应该不难做到。在您Config.groovy
可以输入默认值,然后作为引导过程的一部分,您可以生成一个临时配置文件,其中包含数据库中的值(可以使用对结果的简单查询和迭代来生成该临时文件)。将该临时文件包含为您的 grails 配置位置之一,它将覆盖Config.groovy
如果您的目标是拥有一个供多个 grails 应用程序使用的共享配置文件,您还可以考虑使用 Zookeeper 之类的东西来管理共享配置,但这对于单个配置文件来说可能有点矫枉过正。
不完全是您所要求的,但取决于您想要实现的外部配置重新加载插件可能有用。它可以帮助您覆盖默认属性(在运行时),但不能通过使用数据库。