Spring Cloud刷新配置不会删除旧密钥

时间:2019-03-20 10:19:23

标签: config spring-cloud

我这样写我的财产课

@Component
@ConfigurationProperties(prefix = "third")

我的application.yml是

third: 
  key1: 
    field1: value1
    field2: value2
  key2:
    field1: value1
    field2: value2

它将呈现third.key1third.key2
但是,当我在application.yml

中删除key2时
third: 
  key1: 
    field1: value1
    field2: value2
#  key2:
#    field1: value1
#    field2: value2

然后发布actuator/refresh,它回复third.key2
响应表明它已经认识到application.yml中发生的变化
bean stil渲染third.key1third.key2

2 个答案:

答案 0 :(得分:0)

如果要刷新config dynamic,则应在类@RefreshScope中添加注释。

@Component
@RefreshScope
@ConfigurationProperties(prefix = "third")

此外,您的需求还需要另一个组件springcloud bus,您可以在spring.io中进行检查

答案 1 :(得分:0)

您不能通过不在与“刷新”(aka更新)过程相关的列表中提供属性来删除属性...如果属性未在此类列表中列出,则可以合理地假设它根本不需要刷新-它的值保持不变...

与其提供一个空值,而不是不提供它。

third: 
  key1: 
    field1: value1
    field2: value2
  key2:

或在json中

{
  "third" : {
    "key1" : {
      "field1" : "value1"
      "field2" : "value2"
    },
    "key2" : ""
  }
}

这应该删除它。