当我们的的resouces下有application.yml、application.yaml、application.properties三个配置文件,配置的端口分别为8080/8081/8082。当启动应用程序时用的哪个配置文件??
我们根据源码来看看三个文件的加载顺序
image.png
按住ctrl键点进spring-boot-starter-parent里面,会看到如下配置
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>
由此可见三个文件加载顺序为首先加载yml,再加载yaml、最后加载properties。所以程序最终启动在8082端口上,因为后加载的会覆盖前面的!
一、properties配置文件的多文档
现有三个配置文件
application.properties --默认配置 端口号:9090
application-dev.properties --开发环境 端口号:9091
application-prod.properties --生产环境 端口号:9092
启动程序默认走的是application.properties
image.png
当我们想dev配置生效时,在application.properties 中配置上spring.profiles.active
server.port=9090
spring.profiles.active=dev
image.png
当我们上生产时需要prod配置生效时,在application.properties 中配置上spring.profiles.active
server.port=9090
spring.profiles.active=prod
image.png
- 除了在application.properties中配置外,我们还可以通过JVM配置
1、使用JVM参数,注释掉spring.profiles.active=prod
配置JVM参数
image
image.png
image.png
二、yml的多文档配置
这个很简单,resources下创建application.yml,然后进行如下配置,在同一文件中实现就行
server:
port: 9090
spring:
profiles:
active: dev
---
server:
port: 9091
spring:
profiles: dev
---
server:
port: 9093
spring:
profiles: prod
image.png
网友评论