SpringCloud2020bootstrap配置⽂件失效的解决⽅法
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.3.1.RELEASE
spring cloud Hoxton.SR4
当前版本:
spring boot 2.4.2
spring cloud 2020.0.1
查原因
根据上⾯出现的问题,我使⽤百度搜索了下,⼤概的原因知道了:从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 = Environment();
if ((Property("spring.abled", Boolean.class, true)) {
Spring Boot 2.4.2
package org.springframework.cloud.util;
public abstract class PropertyUtils {
public static boolean bootstrapEnabled(Environment environment) {
return (Property("spring.abled", Boolean.class, false) || MARKER_CLASS_EXISTS;
}
传统解决⽅案
其实官⽹说得很明⽩。看下⾯这段:
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.abled=true. It must be set as a
System Property or environment variable. Once bootstrap has been enabled any application with Spring Cloud
spring boot选择题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 fig.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
"localhost:8888").
两个关键点:
1、加⼀个依赖:spring-cloud-starter-bootstrap
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
2、加⼀个配置:fig.uri
bootstrap.properties
# 应⽤名称
spring.application.name=erwin-cloud-user
# 启⽤环境
spring.profiles.active=dev
# 配置⽂件
fig.label=${spring.application.name}
fig.name=${spring.application.name}
fig.profile=${spring.profiles.active}
fig.uri=localhost:9000
解决⽅案
现在,你只需要这样:
application.properties
# 应⽤名称
spring.application.name=erwin-cloud-user
# 启⽤环境
spring.profiles.active=dev
fig.label=${spring.application.name}
fig.name=${spring.application.name}
fig.profile=${spring.profiles.active}
到此这篇关于SpringCloud2020 bootstrap 配置⽂件失效的解决⽅法的⽂章就介绍到这了,更多相关SpringCloud2020 bootstrap 配置内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论