ApplicationContext 未在 /actuator/refresh 期间为 ApplicationContextInitializer 的回调提供 application.properties 属性源

问题描述 投票:0回答:1

从 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 中的旧行为的根本原因,以及它是否真的是一个错误或故意行为以及相同的任何建议。

如有任何有关此问题的帮助,我们将不胜感激。

spring-boot spring-cloud spring-cloud-config
1个回答
0
投票

我观察到“bootstrap.*”文件刷新良好。考虑到这一点,我想出了一个解决这个问题的方法:

将所有配置文件从

application.*
重命名为
bootstrap.*

这样,Actuator 将刷新您的配置。

© www.soinside.com 2019 - 2024. All rights reserved.