[spring-projects/spring-boot]Spring Cloud Config Client 无法与 Spring Boot 2.4.0 一起使用

2024-05-14 613 views
8

大家好。我有一个使用 Spring Boot 2.4.0 的小项目

plugins {
    id 'org.springframework.boot' version '2.4.0'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

和 Spring Cloud Config Client 2.2.5.RELEASE

ext {
    set('springCloudVersion', "Hoxton.SR9")
    springCloudConfigClientVersion = "2.2.5.RELEASE"
}

dependencies {
    ...
    compile "org.springframework.cloud:spring-cloud-config-client:$springCloudConfigClientVersion"
    ...
}

但是,应用程序无法读取我的 bootstrap.properties 文件

spring.application.name= oauth-service spring.cloud.config.uri= http://localhost:8888

每当我尝试访问这些属性(或该文件中的任何属性)时,我都会收到 NullPointerException。

但是如果我降级到 Spring Boot 2.3.5

plugins {
    id 'org.springframework.boot' version '2.3.5.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

一切正常。

这是一个已知的问题?使用 Spring Boot 2.4.0 和 Spring Cloud Config Client 时,我需要做什么(任何额外的配置)?

回答

5

@lucasdistasi Spring Boot 2.4 与 Spring Cloud 的 2020.0.0(又名 Ilford)版本兼容。 Spring Cloud 团队刚刚为此发布了第五个里程碑。 Spring Cloud Hoxton 与 Spring Boot 2.3.x 和 Spring Boot 2.2.x 兼容。您可以在此处找到 Spring Cloud 和 Spring Boot 兼容性表。

4

这应该重新打开。配置客户端未连接到配置服务器。 2.4.0 和 2020.0.0-M5。它与 2.3.6 配合得很好。和霍克斯顿.SR9。

0

这应该重新打开。配置客户端未连接到配置服务器。 2.4.0 和 2020.0.0-M5。它与 2.3.6 配合得很好。和霍克斯顿.SR9。

是的。我不得不回滚项目的版本,因为无法使用新版本。

5

所以??我刚刚将代码从 Spring Boot 2.3.6 迁移到 2.4.0。部署到我的 DEV 环境后,我没有看到我的 Spring Boot 应用程序从 Spring Cloud 中提取其配置(Spring Cloud 2020.0.0-M5)

2

Spring Cloud 2020.0.0-M6已发布,改进了与Spring Boot 2.4.0的兼容性。如果 Spring Boot 和 Spring Cloud Config 的组合还有其他问题,请在 Spring Cloud Config 项目中提出问题。

7

是否证明它有效?由于它是最近发布的版本,因此互联网上没有太多内容...如果没有,我将不得不恢复迁移..

5

根据Spring Cloud 2020.0 发行说明:

spring-cloud-commons 提供的 Bootstrap 默认不再启用。如果您的项目需要它,可以通过属性或新的启动器重新启用它。

要通过属性重新启用,请设置 spring.cloud.bootstrap.enabled=true 或 spring.config.use-legacy-processing=true。这些需要设置为环境变量、java 系统属性或命令行参数。另一个选项是包含新的 spring-cloud-starter-bootstrap。

添加spring-cloud-starter-bootstrap到我的项目工作正常。 implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'

1

Spring Boot 不管理 Spring Cloud 依赖项,所以它不应该列在那里。

6

@spencergibb,但是 Spring Boot 不向后兼容旧的 Spring Cloud 版本,所以有些东西发生了变化,对吗?我们怎样才能让这一点对于未来升级的人们来说更加明显?

5

@busches你把这种依赖颠倒了。 Spring Cloud 使用 Spring Boot,而不是相反。如果您使用 Spring Cloud,请首先检查您使用的 Spring Cloud 版本是否与您打算升级到的 Spring Boot 版本兼容。我们对此问题跟踪器无能为力。