问题描述

开发的Spring Alibaba Cloud项目,依照阿里巴巴官方提供的毕业依赖关系做了依赖版本的升级,升级后启动应用服务失败。发现bootstrap.yml中所配置的信息都没有生效。
image.png

问题的原因

网上搜了一下,从Spring Boot 2.4版本开始,配置文件加载方式进行了重构。
另外也有配置的默认值变化,原来默认启用 true 现在变更为 false 如下:

  • version:2.2.5

    1. package org.springframework.cloud.bootstrap;
    2. public class BootstrapApplicationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
    3. public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
    4. ConfigurableEnvironment environment = event.getEnvironment();
    5. if ((Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, true)) {
    6. }
    7. }
    8. }
  • version:2.4.2 ```java package org.springframework.cloud.util; public abstract class PropertyUtils { public static boolean bootstrapEnabled(Environment environment) {

    1. return (Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, false) || MARKER_CLASS_EXISTS;

    } }

  1. <a name="Igmcj"></a>
  2. ## 解决方案:传统的解决方案
  3. - 官方文档:[点击访问](https://docs.spring.io/spring-cloud-config/docs/current/reference/html/#config-data-import)<br />
  4. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/333593/1617165626629-a0ba0391-72b6-4941-9bab-0dd6a91b77aa.png#align=left&display=inline&height=231&margin=%5Bobject%20Object%5D&name=image.png&originHeight=461&originWidth=1237&size=106913&status=done&style=none&width=618.5)
  5. <a name="Ye7mi"></a>
  6. ### 方案1:引用依赖
  7. pom.xml中引用 `spring-cloud-starter-bootstrap` 依赖
  8. ```shell
  9. <dependency>
  10. <groupId>org.springframework.cloud</groupId>
  11. <artifactId>spring-cloud-starter-bootstrap</artifactId>
  12. <version>3.0.2</version>
  13. </dependency>

可以在maven仓库中自行找对应的版本信息

方案2:指定运行参数

指定参数 spring.cloud.bootstrap.enabled 值为 true

  1. IDEA中:
  2. spring.cloud.bootstrap.enabled=true
  3. ---
  4. 命令行:
  5. java -jar -Dspring.cloud.bootstrap.enabled=true test.jar

image.png

配置完成后再次启动即可成功运行