【问题标题】:Programmatically detecting if an external config file has been read in?以编程方式检测是否已读入外部配置文件?
【发布时间】:2015-09-02 16:04:10
【问题描述】:

我们使用 grails.config.locations 从应用程序外部的文件中提取(可选)设置。有没有一种好方法可以检测到该文件是否已加载,无论是在 Bootstrap.groovy 中还是在 Config.groovy 本身中?

Config.groovy 有这个:

grails.config.locations = [
  "file:${userHome}/.grails/${appName}-config.groovy"
]

很高兴知道 Grails 是否在此文件中找到并读取。

【问题讨论】:

  • 当你知道配置文件是否被读取时,你希望程序做什么?
  • 也许您可以在该文件中添加一个特殊且唯一的配置,并检查该配置是否存在于您想要的位置。如果找到配置,则外部配置文件已加载。
  • 目前还不清楚他们的动机是什么。如果可以表达功能需求,那么问题可能会有很好的解决方案。
  • Jeff - 目标是将某些内容打印到控制台(只要它在 IntelliJ 的控制台中可见,或者如果通过命令行运行,则可以在那里看到)文件已被读入。这样,开发人员就会知道这一点。

标签: grails grails-config


【解决方案1】:

您可能会在打开 Grails 调试模式时看到这种情况,但您不想这样做。我正在使用以下策略。首先我检查文件是否存在:

 def externalConfigFile = "${userHome}/.grails/${appName}-config.groovy"
 if (new File(externalConfigFile).exists()) {
     grails.config.locations << "file:" + externalConfigFile
     log.info "External configuration file found at ${externalConfigFile} ..." 
 }

然后在文件本身中我只记录它已运行:

 log.info 'External config file was loaded.'

所以现在我可以在启动时的日志中看到我找到了一个外部配置文件,它是一个现有文件,并且该文件是由 Grails 运行的,所以它被加载了。

我还没有找到更好的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2019-03-23
    相关资源
    最近更新 更多