springboot项目中的bootstrap.yml配置不生效(没有自动提示也没有变绿叶)

1、背景与现象:

(1)新创建一个 springboot项目,添加了 bootstrap.yml 文件,发现文件并没有如预期变成绿色叶子,编写的时候也没有自动提示。

(2)启动的时候,发现端口是8080,并没有如配置上写的端口进行启动——由此发现配置并没有生效,所以是为什么呢。。。

 

原因之一:

2、问题定位

为什么不生效呢,通过资料查找,原来:

(1)单纯的 springboot 项目只会识别 application.* 配置文件, bootstrap.yml 它不认识啊,所以并没有被识别为配置文件,所以也不会变成绿叶,也没有自动提示了。——对应方法1 : 把配置文件改为 application.*

 

(2)如果是 springcloud 项目,就能够识别 bootstrap.yml | bootstrap.properties,相同配置以 bootstrap.yml 为准。如果还有 application文件, bootstrap 优先于 application 文件(以 application 为准)

 

(3)那我刚才建的项目,它是一个 springboot项目,还不是一个springcloud项目,两者要怎样去切换呢?

添加一个依赖,就把 springboot 变成 springcloud 了

 <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bootstrap</artifactId>
 </dependency>

 

 

原因之二:

 一个最简单的 springboot 项目,

在pom.xml 引入的依赖是:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.6</version>
        </dependency>

在 resources 下面的 application.yml 没有变绿叶

可能只是 idea 没有安装对应的插件,
去plugins 安装一下插件可能就好了。
image

安装了这个,它就好了。。。。




原因之三

resources文件夹 要标记一下。如果这个 resources 的文件夹是普通的文件夹(没有标识),好像也是不会变绿叶的。
ctrl + shift + s 或者 command + ; 打开这个配置页面,设置一下。
image

 

 

 

 

 

优先级

3、bootstrap.yml, bootstrap.properties, application.yml, application.properties 优先级哪个高,以哪个为准?

加载顺序(优先级): bootstrap > application > 配置中心

bootstrap.yml > bootstrap.properties > application.yml > application.properties

后者覆盖前者

 

所以,最终,是以配置中心为准?emm

!

 

posted @ 2022-02-17 17:01  aaacarrot  阅读(7444)  评论(0编辑  收藏  举报