springboot 配置加载顺序

1、在标准的 SpringBoot 应用中,本地配置加载顺序如下:

bootstrap.yaml
bootstrap.properties
bootstrap-{profile}.yaml
bootstrap-{profile}.properties
application.yaml
application.properties
application-{profile}.yaml
application-{profile}.properties
nacos 配置中心共享配置(通过 spring.cloud.nacos.config.shared-configs 指定)。
nacos 配置中心该服务配置(通过 spring.cloud.nacos.config.prefix 和spring.cloud.nacos.config.file-extension 指定)。
nacos 配置中心该服务-{profile} 配置(通过 spring.cloud.nacos.config.prefix 和spring.cloud.nacos.config.file-extension、以及 spring.profiles.active 指定)。
优先级低的配置会被先加载,所以后加载的是优先级高的配置,后加载的相同key会覆盖掉先前加载的,也就是远程nacos配置会覆盖本地相同key

三种文件路径相同时,三个文件中的配置信息都会生效,但是当三个文件中有配置信息冲突时,加载顺序是(同一级目录下):
优先级低的配置会被先加载,所以优先级高的配置会覆盖优先级低的配置。

加载顺序
yaml>yml>properties,相同属性的值,后面覆盖前者

yml覆盖properties,yaml覆盖yml,最终相同属性的值显示的是yaml中的

优先级
properties(最高)> yml > yaml(最低)

eg:
properties:1p

yml:2p

yaml:3p

最终加载结果为:1p

2、外部应用程序属性:Jar包外部加载顺序


Spring Boot 在应用程序启动时会自动查找并加载以下位置的 application.properties 和 application.yaml 文件:

  • 从类路径
    • 类路径根目录
    • 类路径中的 /config 目录
  • 从当前目录
    • 当前目录
    • 当前目录中的 config/ 子目录
    • config/ 子目录的直接子目录

列表按照优先级排序(较低位置的值会覆盖较前面的值)。从加载的文件中提取的文档会作为 PropertySources 添加到 Spring Environment 中。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/jiayoudangdang/article/details/140577497

配置两个地方即可
1.Dockerfile配置文件
主要是jar包的运行方式,注意看最后一个ENTRYPOINT参数中的–spring.config.location,这里表示运行的时候动态扫描加载某个目录下的配置文件。我们使用docker build将jar包打好镜像后,继续看第二步,不会的参考:Docker(三)| Java项目打包成镜像并动态加载配置文件和日志、文件持久化.

FROM java:8
EXPOSE 8900

#VOLUME /tmp
ADD smart.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar","--spring.config.location=/data/java/config/application-dev.yml"]


2.运行docker容器命令,主要是挂载目录
假设镜像名字和版本为java/springboot:2019,使用下面命令创建

docker run -dit \
--name smart \
-p 8900:8900 \
-v /data/java/server:/data/java/server \
-v /data/java/config:/data/java/config \
-v /data/java/logs:/data/java/logs \
-v /data/java/txt:/data/java/txt \
java/springboot:2019


其他的不介绍了,就介绍我们的外部配置文件application-dev.yml放哪。可以看到第五行的-v命令中,我将目录设置为同样是为了方便,大家可以随意。

我们将linux宿主机上的/data/java/config目录挂载到容器中的/data/java/config目录,大家发现没,第一步的Dockerfile文件中的配置的扫描目录就是/data/java/config目录下的application-dev.yml配置文件,这样我们直接可以修改宿主机上的application-dev.yml配置文件,从而就是修改了容器中的application-dev.yml配置文件,所以我们再重新restart启动的时候,可以发现,扫描的内容就是我们修改之后的。

因为挂载目录是可以将宿主机上的文件和容器中的文件进行交互的,简单来说就是共享同一个文件。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_25112523/article/details/100017991

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值