SpringBoot学习笔记(十七)–外部配置加载顺序
常用外部配置加载
Spring Boot 可以从以下位置加载配置,优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
- 命令行参数
- 来自 java:comp/env 的 JNDI 属性
- Java 系统属性(System.getProperties())
- 操作系统环境变量
- RandomValuePropertySource 配置的 random.* 属性值
- jar 包外部的 application-{profile}.properties 或 application.yml (带 spring.profile ) 配置文件
- jar 包内部的 application-{profile}.properties 或 application.yml (带 spring.profile ) 配置文件
- jar 包外部的 application.properties 或 application.yml (不带 spring.profile ) 配置文件
- jar 包内部的 application.properties 或 application.yml (不带 spring.profile ) 配置文件
- @Configuration 注解类上的 @PropertySource
- 通过 SpringApplication.setDefaultProperties 指定的默认属性
所有支持的配置加载来源:
重点掌握
1. 命令行参数
所有的配置都可以在命令行上指定
多个配置用空格分开: –配置项=值
java -jar springboot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.servlet.context-path=/abc
由 jar 包外向 jar 包内进行加载,优先加载带 profile
-
jar 包外部的 application-{profile}.properties 或 application.yml (带 spring.profile ) 配置文件
-
jar 包内部的 application-{profile}.properties 或 application.yml (带 spring.profile ) 配置文件
之后加载不带 profile
-
jar 包外部的 application.properties 或 application.yml (不带 spring.profile ) 配置文件
-
jar 包内部的 application.properties 或 application.yml (不带 spring.profile ) 配置文件
验证
命令行参数
java -jar springboot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.servlet.context-path=/abc
运行结果为
Tomcat started on port(s): 8087 (http) with context path '/abc'
在浏览器中访问
http://localhost:8087/abc/hello
即可返回结果 hello
加载 jar 包外部配置文件
将 application.properties 与 springboot-02-config-02-0.0.1-SNAPSHOT.jar 放在同一路径下。
application.properties
server.port=8085
#配置项目的访问路径
server.servlet.context-path=/springboot
在命令行中执行
java -jar springboot-02-config-02-0.0.1-SNAPSHOT.jar
运行结果为
Tomcat started on port(s): 8085 (http) with context path '/springboot'
在浏览器中访问
http://localhost:8085/springboot/hello
即可返回结果 hello