背景:
我有一个使用 Spring Cloud 运行的 Spring Boot 1.4 应用程序。我的应用程序正在使用本机配置文件从外部 config.properties 文件中提取设置。配置服务器嵌入在同一个应用程序中。
在 config.properties 文件中,我添加了以下设置:
app.setting=helloworld
什么有效:
当我更改属性并发送 REFRESH 事件时,标记的相关 bean 被重新加载并且更改被正确识别。
什么不起作用:
如果我实际上从 config.properties 中删除了该属性(例如通过将其注释掉),则 REFRESH 事件实际上不会刷新应用程序。Spring Cloud 似乎没有认识到属性被删除的事实,当数据绑定器继续更新世界的状态时,它错过了属性被删除的事实,并且链接到它的相应 bean 也必须刷新并且它的字段设置为空白/空等。
看起来 data-binder 只查看配置中当前可用的内容,而不记录what is 与 what is。
在 bean 配置状态中实际禁用该设置的唯一方法不是删除它,而是将其设置为一个空白值(这是一个新值,因为该设置只是一个字符串)。请注意,映射到此属性的 Java bean 中的字段除了 null 之外没有默认值,并且该值未在其他任何地方定义(如在嵌入式 application.properties 文件等中)
- 我可能会错过什么?
- 这是一个功能吗?漏洞?
谢谢你的时间。