ssssProfile的功能:为了方便多环境适配,springboot简化了profile功能。(适用于不同的环境)https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles
application-profile功能
ssss● 默认配置文件 application.yaml;任何时候都会加载
ssss● 指定环境配置文件 application-{env}.yaml , eg:①、application-prod.yaml ②、application-test.yaml
ssss● 激活指定环境 :spring.profiles.active=配置环境名
sssdss ○ 配置文件激活
sssdss ○ 命令行激活:java -jar xxx.jar --spring.profiles.active=prod --person.name=haha
sssdsdsdss 【注】:修改配置文件的任意值,命令行优先
ssss● 默认配置与环境配置同时生效 =====》总结:命令行>指定配置文件>默认配置文件
ssss● 同名配置项,profile配置优先
@Profile条件装配功能
profile分组
spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
使用:--spring.profiles.active=production 激活
外部化配置
ssss官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config
ssss通过官方文档我们可以知道:
sdssss①、外部配置源常用:Java属性文件、YAML文件、环境变量、命令行参数;
dsdsdssdssss环境变量:比如我们的操作系统,MAVEN版本是什么等
@Value("${MAVEN_HOME}")
private String msg;
@Value("${os.name}")
private String osName;
@GetMapping("/msg")
public String getMsg(){
return msg+"=====>"+osName;
}
dsdsdsdsdsdsdsdsssdssssadas
dsdsdssdssss我们也可以通过其他途径查看系统环境、参数等:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);
ConfigurableEnvironment environment = run.getEnvironment();
Map<String, Object> systemEnvironment = environment.getSystemEnvironment();
Map<String, Object> systemProperties = environment.getSystemProperties();
System.out.println(systemEnvironment);
System.out.println(systemProperties);
}
}
配置文件查找位置
ssss(1) classpath 根路径dsdss
ssss(2) classpath 根路径下config目录
ssss(3) jar包当前目录 ssss注:从这时起,我们已经打好包了,如果再改变其配置就只能在jar包所在的目录开始配置。
ssss(4) jar包当前目录的config目录
ssss(5) /config子目录的直接子目录
配置文件加载顺序:
ssss1. 当前jar包内部的application.properties和application.yml
ssss2. 当前jar包内部的application-{profile}.properties 和 application-{profile}.yml
ssss3. 引用的外部jar包的application.properties和application.yml
ssss4. 引用的外部jar包的application-{profile}.properties 和 application-{profile}.yml