从 Spring Boot 2.4.x 和 Spring Cloud 2020.0.0 开始,应用程序上下文的环境在 /actuator/refresh 端点调用期间不向 ApplicationContextInitializer 实现的回调提供基于 application.properties 的属性源。
此行为从 Spring Boot 2.4.x 和 Spring cloud 2020.0.0 开始,直到 Spring Boot 3.0.x 为止都是相同的。
从 Spring Boot 2.1.x 到 Spring Boot 2.3.x,我们在上述回调中获取了基于 application.properties 的属性源。
Spring Boot 2.4.x 的回调方法详细信息如下: https://github.com/jk1608/springboot/blob/main/spring-boot-24-refresh/src/main/java/dev/demo/springboot24refresh/引导程序/CustomApplicationContextInitializer.java
Spring Boot 2.4.x 失败的测试用例: https://github.com/jk1608/springboot/blob/main/spring-boot-24-refresh/src/test/java/dev/demo/springboot24refresh/主/SpringBoot24RefreshApplicationTest.java#L43
将通过 Spring Boot 2.1.x 的测试用例: https://github.com/jk1608/springboot/blob/main/spring-boot-21-refresh/src/test/java/dev/demo/springboot21refresh/主/SpringBoot21RefreshApplicationTest.java#L43
完整的问题描述在这里:https://github.com/jk1608/springboot/blob/main/spring-boot-24-refresh/Readme.md
可以在 github 中找到使用 Spring Boot 2.4.x 查看此新行为的完整最小代码:https://github.com/jk1608/springboot/tree/main/spring-boot-24-refresh
查看 Spring boot 2.1.x 旧行为的完整最小代码可以在 github 中找到:https://github.com/jk1608/springboot/tree/main/spring-boot-21-refresh
试图找到根本原因,但无法确定 Spring Boot 或 Spring Cloud 中的特定更改集。似乎是框架级别的更改,但不确定。
在尝试任何解决方案之前,想了解 2.4.x 中的新行为与 Spring Boot 2.1.x 中的旧行为的根本原因,以及它是否真的是一个错误或故意行为以及相同的任何建议。
如有任何有关此问题的帮助,我们将不胜感激。
我观察到“bootstrap.*”文件刷新良好。考虑到这一点,我想出了一个解决这个问题的方法:
将所有配置文件从
application.*
重命名为 bootstrap.*
。
这样,Actuator 将刷新您的配置。