【问题标题】:Viewing current Spring (Boot) properties查看当前 Spring (Boot) 属性
【发布时间】:2017-08-21 14:46:08
【问题描述】:

我将 Spring Boot 应用程序作为 .jar 文件运行,该文件部分从位于 jar 内的 application.yml 获取其属性,而另一部分属性由位于 jar 外的另一个 application.yml 提供。外部的一些属性会覆盖内部的属性。为了测试属性是否被正确覆盖,我想查看当前活动的属性。这是开箱即用的吗?或者是通过属性输出逻辑扩展我的应用程序的唯一解决方案?

【问题讨论】:

    标签: spring-boot properties-file


    【解决方案1】:

    如果您将Spring Boot Actuator 添加到您的依赖项中,您可以在actuator endpoints 查看大量配置和其他信息。您可以在/configprops 端点查看属性。

    【讨论】:

    • 嗯,但是 /env 和 /configprops 不显示属性的当前值。例如 /env 响应来自 jar 内部的值。访问此端点是看不到外部覆盖参数的。
    • 您确定,正在获取外部参数。对我来说,/env 在外部属性文件中显示属性。
    • @jny 不幸的是 /configprops 没有显示我的自定义属性,而只有 spring-boot 原生属性
    • @dhroove 不,我还没有
    【解决方案2】:

    至少从 Spring Boot 2.0 开始,actuator/env 将按照 propertySources 的优先顺序返回所有属性的列表,即。如果在 >1 个源中重新定义了一个属性,则从顶部开始的第一次出现的读数就是处于活动状态的那个。

    对于单个属性actuator/env/<property-name> 将返回有效值及其定义的来源

    {
        "property": {
            "source": "applicationConfig: [file:../application-tom.properties]",
            "value": "DEBUG"
        },
    ...
    }
    
    

    注意:我不知道这是否会反映以编程方式修改弹簧上下文时可能发生的任何变化。但那是smth。无论如何都不应该这样做。

    【讨论】:

    猜你喜欢
    • 2017-09-10
    • 2016-12-27
    • 2019-04-13
    • 2016-07-06
    • 2017-04-15
    • 1970-01-01
    • 2014-12-30
    • 2018-12-18
    • 2018-02-25
    相关资源
    最近更新 更多