Profile功能
为了方便多环境适配,springboot简化了profile功能。
1、application-profile功能
默认配置文件 application.yaml;任何时候都会加载
指定环境配置文件 application-{env}.yaml
激活指定环境
- 配置文件激活
- 命令行激活:java -jar xxx.jar –spring.profiles.active=prod –person.name=haha
- 修改配置文件的任意值,命令行优先
默认配置与环境配置同时生效
同名配置项,profile配置优先
1 | //比如说再有两个的情况下, |
通过这种方式指定一个配置文件。
在应用程序启动时默认的配置文件先生效,然后再使用指定的配置文件,当两个配置文件有重复的配置的时候,指定的优先生效。
2、@Profile条件装配功能
1 | "test") ( |
1 |
|
不同的配置可以对类和返回值产生不同的影响,但一般不这么做,因为一般的项目都比较大而复杂。
3、profile分组
1 | spring.profiles.group.production[0]=proddb |
当我们指定的指定一个的配置文件的时候,属于它的组也会依次生效
4、外部化配置
- 默认属性(通过设置指定
SpringApplication.setDefaultProperties
)。 @PropertySource
@Configuration
类上的注释。请注意,Environment
在刷新应用程序上下文之前,不会将此类属性源添加到中。现在配置某些属性(如logging.*
和spring.main.*
在刷新开始之前先读取)为时已晚。- 配置数据(例如**文件)**
application.properties
- 一
RandomValuePropertySource
,只有在拥有性能random.*
。 - 操作系统环境变量。
- Java系统属性(
System.getProperties()
)。 - 的JNDI属性
java:comp/env
。 ServletContext
初始化参数。ServletConfig
初始化参数。- 来自的属性
SPRING_APPLICATION_JSON
(嵌入在环境变量或系统属性中的嵌入式JSON)。 - 命令行参数。
properties
测试中的属性。可用于测试应用程序的特定部分@SpringBootTest
的测试注释和注释。@TestPropertySource
测试中的注释。$HOME/.config/spring-boot
当devtools处于活动状态时,目录中的Devtools全局设置属性。
5、外部配置源
常用:Java属性文件、YAML文件、环境变量、命令行参数;
6、配置文件查找位置
(1) classpath 根路径
(2) classpath 根路径下config目录
(3) jar包当前目录
(4) jar包当前目录的config目录
(5) /config子目录的直接子目录
7、配置文件加载顺序:
- 当前jar包内部的application.properties和application.yml
- 当前jar包内部的application-{profile}.properties 和 application-{profile}.yml
- 引用的外部jar包的application.properties和application.yml
- 引用的外部jar包的application-{profile}.properties 和 application-{profile}.yml
指定环境优先,外部优先,后面的可以覆盖前面的同名配置项