Grails3中的拆分配置

Grails3中的拆分配置,grails,spring-boot,configuration,Grails,Spring Boot,Configuration,我目前正在将现有的Grails2.5.x应用程序迁移到Grails3.1 在以前的grails版本中,我真正喜欢的是使用grails.config.locations选项在多个文件上模块化配置文件,例如: Config.groovy App.groovy Logging.groovy SpringSecurity.groovy Quartz.groovy ... 由于Grails3现在基于SpringBoot,所以它使用了不同的配置方法。但我无法找到从多个文件加载配置的方法 我已经读过spri

我目前正在将现有的Grails2.5.x应用程序迁移到Grails3.1

在以前的grails版本中,我真正喜欢的是使用
grails.config.locations
选项在多个文件上模块化配置文件,例如:

Config.groovy
App.groovy
Logging.groovy
SpringSecurity.groovy
Quartz.groovy
...
由于Grails3现在基于SpringBoot,所以它使用了不同的配置方法。但我无法找到从多个文件加载配置的方法

我已经读过spring中的
spring.config.location
选项,但它似乎并没有达到我想要的效果。它似乎在另一个位置搜索application.groovy/application.yml,但这不会让我返回分割的配置文件

我也不喜欢这个选项必须设置为环境参数。应用程序应该在不配置额外的环境变量或参数的情况下工作

这引出了我的问题:

  • 是否有可能恢复以前grails版本的配置可能性
  • grails或spring boot中是否有其他方法实现类似的功能

spring.config.location将另一个配置文件与Grails配置合并,而不是覆盖它。我们在部署在多台服务器上的应用程序中使用它,以覆盖与应用程序一起部署的
应用程序.yml
中的默认值-我们只包括针对特定部署的不同密钥

一个可能的问题是不能用这种方式覆盖数据库配置。我们通过将数据库配置设置放入环境变量(例如,
export-database\u-URL=foo
export-database\u-USERNAME=baz
export-database\u-PASSWORD=bar
)中,然后在配置中使用占位符来解决这个问题,如下所示:

environments:
    production:
        dataSource:
            url: ${DATABASE_URL}
            username: ${DATABASE_USERNAME}
            password: ${DATABASE_PASSWORD}

这个数据库配置部分有点粗糙,仔细想想,“3个yaml文件合并为一个”的全部原因并没有得到很好的论证,但这是我们所能想到的最好的方法。

现在有一个Grails 3插件,它模仿了Grails 2中处理配置文件的方式: