时间:2021-05-20
Spring Cloud 2020版本 bootstrap 配置文件(properties 或者 yml)无效
微服务是基于Spring Cloud框架搭建的,Spring Cloud Config作为服务配置中心。
业务服务只配置服务名称、启用环境和config的URL地址,其他都配置在配置中心,例如服务端口、服务注册中心地址等。可在开发环境(dev)、测试环境(test)和生产环境(prod)分别配置。
所以预想的启动流程是:先加载配置文件,再启动服务。
之前的做法是,将配置文件名称改为:bootstrap.properties。
之前直接就可以用,而现在,启动的端口是8080,明显没有加载到bootstrap.properties文件,我以为我的文件名字写错了,核对了几次,确认无误,我猜想估计是bootstramp.properties配置文件没有生效。
之前的版本:
当前版本:
根据上面出现的问题,我使用百度搜索了下,大概的原因知道了:从Spring Boot 2.4版本开始,配置文件加载方式进行了重构。
另外也有配置的默认值变化,如下:
Spring Boot 2.3.8.RELEASE
package org.springframework.cloud.bootstrap;public class BootstrapApplicationListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered { public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) { ConfigurableEnvironment environment = event.getEnvironment(); if ((Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, true)) {Spring Boot 2.4.2
package org.springframework.cloud.util;public abstract class PropertyUtils { public static boolean bootstrapEnabled(Environment environment) { return (Boolean)environment.getProperty("spring.cloud.bootstrap.enabled", Boolean.class, false) || MARKER_CLASS_EXISTS; }其实官网说得很明白。看下面这段:
Config First Bootstrap
To use the legacy bootstrap way of connecting to Config Server, bootstrap must be enabled via a property or the spring-cloud-starter-bootstrap starter. The property is spring.cloud.bootstrap.enabled=true. It must be set as a System Property or environment variable. Once bootstrap has been enabled any application with Spring Cloud Config Client on the classpath will connect to Config Server as follows: When a config client starts, it binds to the Config Server (through the spring.cloud.config.uri bootstrap configuration property) and initializes Spring Environment with remote property sources.
The net result of this behavior is that all client applications that want to consume the Config Server need a bootstrap.yml (or an environment variable) with the server address set in spring.cloud.config.uri (it defaults to "http://localhost:8888").
两个关键点:
1、加一个依赖:spring-cloud-starter-bootstrap
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>2、加一个配置:spring.cloud.config.uri
bootstrap.properties# 应用名称spring.application.name=erwin-cloud-user# 启用环境spring.profiles.active=dev# 配置文件spring.cloud.config.label=${spring.application.name}spring.cloud.config.name=${spring.application.name}spring.cloud.config.profile=${spring.profiles.active}spring.cloud.config.uri=http://localhost:9000现在,你只需要这样:
application.properties# 应用名称spring.application.name=erwin-cloud-user# 启用环境spring.profiles.active=devspring.config.import=optional:configserver:http://localhost:9000spring.cloud.config.label=${spring.application.name}spring.cloud.config.name=${spring.application.name}spring.cloud.config.profile=${spring.profiles.active}到此这篇关于SpringCloud2020 bootstrap 配置文件失效的解决方法的文章就介绍到这了,更多相关SpringCloud2020 bootstrap 配置内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
springcloud配置智能路由zuul后转发请求指定的方法后会导致cookie无法获取的问题,主要解决方法是再application配置文件中加入sensi
解决方法:补充:idea中yml文件图标小绿叶变成小网格问题及自动提示失效解决方法idea中yml文件图标小绿叶变成小网格问题及自动提示失效解决方法.yml文件
新版本的PhpMyAdmin增强了安全性,需要在配置文件设置一个短语密码。否则进入之后会有“配置文件现在需要一个短语密码。”的红色警叹提示。解决方法:1、将ph
本文介绍了springcloud中启动EurekaServer的方法,分享给大家,具体如下:一、新建工程二、工程结构三、修改配置文件#eureka.client
Ubuntu14.04重启后DNS配置丢失问题的解决方案每次修改DNS配置文件/etc/resolv.conf重启后就会失效。从网上查知,这个文件是动态创建,所