SpringBoot无法识别bootstrap.yml小绿叶问题的解决办法
作者:彬禹随笔
错误信息
问题定位
一般单独使用 Spring Boot 时,bootstrap.yml 文件一般是不会生效的,也就是没有 小绿叶 图标;如果使用了 Spring Cloud 组件 bootstrap.yml 才会生效,需要引入 spring-cloud-commons-dependencies 这个包依赖。 另外 bootstrap.yml 的加载顺序优先于 application.yml。
解决
方案一,可以引入 Spring Cloud
中的某一组件即可,如 Eureka
或则 Feign
等,因为里面包含 spring-cloud-commons-dependencies
依赖。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
方案二,单独引入 spring-cloud-commons-dependencies
依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons-dependencies</artifactId> <version>${spring-cloud-commons.version}</version> </dependency>
拓展:
springboot读取不到bootstrap.yml配置项问题
今天在搭建项目的时候,采用springboot 2.4.6版本,然后添加bootstrap.yml配置文件后突然发现一直读取不到配置。之前在进行项目依赖漏洞版本的升级时有对其进行简单了解。
原因剖析
简单的说就是:由于bootstrap是spring cloud带来的附加品,所以需要有cloud相关的一些配置才能够去正常读取它,否则只会去读取application.yml。
解决方法
如果springboot版本低于2.4.0版本的话,需要在启动类对应的pom里添加依赖
<!-- spring cloud,基于spring cloud才会读取bootstrap.yml --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-context</artifactId> </dependency>
如果springboot版本高于2.4.0版本的话,则在启动类对应的pom里添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
例如我这里用到的是2.4.6版本,那么对应需要加的依赖为:
<!-- spring cloud,基于spring cloud才会读取bootstrap.yml --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version> </dependency>
至此,启动banner和@value("${spring.application.name}")都可以读取到bootstrap.yml文件中的值。
以上就是SpringBoot无法识别bootstrap.yml小绿叶问题的解决办法的详细内容,更多关于SpringBoot无法识别bootstrap.yml的资料请关注脚本之家其它相关文章!