springboot--外部环境配置

外部环境配置

  • 前言
  • 1、配置优先级
    • 配置文件优先级如下(后面的覆盖前面的)
    • 测试
  • 2、外部配置
  • 3、导入配置
  • 4、属性占位符

前言

场景:线上应用如何快速修改配置,并引用最新配置?
springBoot 使用配置优先级+外部配置 简化配置更新、配置运维
只需要给jar应用所在的文件夹放一个application.properties最新配置文件,重启项目就能自动应用最新配置

1、配置优先级

springBoot 允许将配置外部化,以便可以在不同环境中使用相同的应用程序代码
我们可以使用各种外部配置源,包括java Properties文件,yaml文件、环境变量和命令参数
@value可以获取值,也可以用@configurationProperties将所有属性帮i的那个到java object中
以下是springBoot属性源加载顺序,后面的会覆盖钱买你的值 由低到高 高优先级覆盖低优先级
1、默认属性(通过springApplication.setDefaultproperties指定的)
springboot--外部环境配置_第1张图片

2、@propertysource指定加载的配置(需要卸载@Configuration类上才可生效)
springboot--外部环境配置_第2张图片

3、配置文件(application.properties/yml等)
4、RandomValuePropertySource支持的random.*配置(如:@value(“$(random.int)”)
5、os环境变量|
6、java系统属性(system.getProperties())
7、JnD1属性(来自java:comp/env)
8、ServLetContext 初始化参数
9、ServletConfig初始化参数
10、SPRING_APPLICATION_JSON属性(内置在环境变量或系统属性的JSON)
11、命令行参数
springboot--外部环境配置_第3张图片

12、测试属性,(@SpringBootTest进行测试时指定的属性)
13、测试类@TestPropertySource注解
14、Devtools设置的全局属性($HOME/.config/spring-boot)

结论:配置可以写在很多位置,常见的优先级顺序:
命令行>配置文件>springappliation配置

配置文件优先级如下(后面的覆盖前面的)

  1. jar包内的application.properties/yml
  2. jar包内的application-{profile}.properties/yml
  3. jar包外的application.properties/yml
  4. jar包外的application-{profile}.properties/yml

建议:用一种格式的配置文件,如果。properties和.yml同时存在,则。properties优先
所有参数均可以由命令行传入,使用–参数项=参数值,将会被添加到环境变量中,并优先于配置文件,比如java -jar app.jar --name=“String”:, 可以使用@Value(“$(name)”)获取

测试

打包成jar包
springboot--外部环境配置_第4张图片
springboot--外部环境配置_第5张图片
在外部设置配置文件
springboot--外部环境配置_第6张图片
springboot--外部环境配置_第7张图片

2、外部配置

springBoot应用启动会自动寻找application.properties和application.yaml位置,惊醒加载,顺序如下:
1、类路径
类的跟路径、类下/config包
2、当前路径(项目所在位置)
当前路径、当前下/config子目录、/config目录的直接子目录
springboot--外部环境配置_第8张图片
springboot--外部环境配置_第9张图片
在外部闯进config目录权重高于外面的application.properties文件
springboot--外部环境配置_第10张图片
springboot--外部环境配置_第11张图片

3、导入配置

#导入指定的配置
#spring.config.import=classpath:/aaa.properties

#导入配置的优先级低于配置文件的优先级
#aaa=cccc

4、属性占位符

springboot--外部环境配置_第12张图片

#属性占位符
haha=我的端口是:${server.port}

获取haha的值
springboot--外部环境配置_第13张图片

springboot--外部环境配置_第14张图片
springboot--外部环境配置_第15张图片

你可能感兴趣的:(springboot,spring,boot,后端,java,spring)