spring配置

environment
profile
在 Spring Boot 中有两种上下文,一种是 bootstrap另外一种是 application, bootstrap 是应用程序的父上下文,bootstrap用于应用程序上下文的引导阶段,由父Spring ApplicationContext加载。bootstrap 的加载优先于 applicaton,所以优先级从大到小如下:
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml
如果你不是spring cloud项目,只是spring boot项目,在启动无法加载到bootstrap的配置,应该为如下解决方式:添加spring-cloud-context的POM依赖

-Dspring.cloud.config.allow-override=false
-Dspring.cloud.bootstrap.enabled=false

测试配置:
三方jar-SPI配置:BootstrapConfiguration:configInBooFactories
本地:bootstrap.properties:configInBooProperties
本地:application.properties:configInAppProperties
启动参数:-Dspring.cloud.bootstrap.enabled=false 结果:configInAppProperties
启动参数:-Dspring.cloud.bootstrap.enabled=true 结果:configInBooFactories
启动参数:-Dspring.cloud.bootstrap.enabled=true 注释掉application.properties与三方jar 结果:configInBooProperties
启动参数:-Dspring.cloud.bootstrap.enabled=false 解析不到bootstrap.properties内容
启动参数:-Dspring.cloud.bootstrap.enabled=true 注释掉application.properties开启三方jar 三方jar优于本地本地bootstrap.properties 结果:configInBooFactories

bootstrap开启:三方 大于 app 大于 boo
bootstrap关闭:三方、boo不生效 只有app
待测试:如果使用启动参数,优先级该如何排序?

applicaiton.properties大于bootstrap.properties

1)命令行参数。所有的配置都可以在命令行上进行指定;
2)来自java:comp/env的JNDI属性;
3)Java系统属性(System.getProperties());
4)操作系统环境变量 ;
5)jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
6)jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 再来加载不带profile
7)jar包外部的application.properties或application.yml(不带spring.profile)配置文件
8)jar包内部的application.properties或application.yml(不带spring.profile)配置文件
9)@Configuration注解类上的@PropertySource
在这里插入图片描述

1、java -jar 命令行中,通过 --spring.config.location 参数指定的方式优先级最高。
2、项目 jar 包同级下直接放 properties 文件次之,直接把配置文件放到 jar 包的同级目录。
3、项目内部的 classpath 同级 config 文件夹,在 classpath 下建一个 config 文件夹,然后把配置文件放进去。
4、项目内部的 classpath 同级放 properties yum 文件是最低优先级,是在 classpath 下直接放配置文件

Bootstrap 上下文是 Spring Cloud 新引入的,与传统 Spring 上下文相同,即 ConfigurableApplicationContext 实例,由 BootstrapApplicationListener 监听 ApplicationEnvironmentPreparedEvent 事件时创建。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值