大连网站建设哪里好页面设计描述
外部环境配置
- 前言
 - 1、配置优先级
 - 配置文件优先级如下(后面的覆盖前面的)
 - 测试
 
- 2、外部配置
 - 3、导入配置
 - 4、属性占位符
 
前言
场景:线上应用如何快速修改配置,并引用最新配置?
 springBoot 使用配置优先级+外部配置 简化配置更新、配置运维
 只需要给jar应用所在的文件夹放一个application.properties最新配置文件,重启项目就能自动应用最新配置
1、配置优先级
springBoot 允许将配置外部化,以便可以在不同环境中使用相同的应用程序代码
 我们可以使用各种外部配置源,包括java Properties文件,yaml文件、环境变量和命令参数
 @value可以获取值,也可以用@configurationProperties将所有属性帮i的那个到java object中
 以下是springBoot属性源加载顺序,后面的会覆盖钱买你的值 由低到高 高优先级覆盖低优先级
 1、默认属性(通过springApplication.setDefaultproperties指定的)
 
2、@propertysource指定加载的配置(需要卸载@Configuration类上才可生效)
 
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、命令行参数
 
12、测试属性,(@SpringBootTest进行测试时指定的属性)
 13、测试类@TestPropertySource注解
 14、Devtools设置的全局属性($HOME/.config/spring-boot)
结论:配置可以写在很多位置,常见的优先级顺序:
 命令行>配置文件>springappliation配置
配置文件优先级如下(后面的覆盖前面的)
- jar包内的application.properties/yml
 - jar包内的application-{profile}.properties/yml
 - jar包外的application.properties/yml
 - jar包外的application-{profile}.properties/yml
 
建议:用一种格式的配置文件,如果。properties和.yml同时存在,则。properties优先
 所有参数均可以由命令行传入,使用–参数项=参数值,将会被添加到环境变量中,并优先于配置文件,比如java -jar app.jar --name=“String”:, 可以使用@Value(“$(name)”)获取
测试
打包成jar包
 
 
 在外部设置配置文件
 
 
2、外部配置
springBoot应用启动会自动寻找application.properties和application.yaml位置,惊醒加载,顺序如下:
 1、类路径
 类的跟路径、类下/config包
 2、当前路径(项目所在位置)
 当前路径、当前下/config子目录、/config目录的直接子目录
 
 
 在外部闯进config目录权重高于外面的application.properties文件
 
 
3、导入配置
#导入指定的配置
#spring.config.import=classpath:/aaa.properties#导入配置的优先级低于配置文件的优先级
#aaa=cccc
 
4、属性占位符

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

 
