1.profile功能(多配置文件功能,可以决定使用哪个配置文件)
![](https://img2022.cnblogs.com/blog/1349485/202205/1349485-20220511223636114-304238311.png)
这里需要注意的是:
1.起作用的配置有两个:
1.默认的配置文件application.properties
2.自定义的配置文件application-pro.yml(前缀必须是application)
并且是两个配置文件共同起作用,如果两个配置文件中都配置了某个内容,自定义的配置文件application-pro.yml会覆盖默认配置文件
2.可以使用命令行的形式指定哪个自定义配置文件生效:例如
java -jar xxx.jar --spring.profiles.active=pro --person.name=hh
重要点1:--spring.profiles.active=pro可以指定哪个自定义配置文件生效
重要点2:--person.name=hh可以直接修改配置文件中某个配置项的内容
结论:
1.命令行指定配置文件方式优先级高于application.properties中的配置
2.命令行的形式可以直接修改配置文件中的某项配置内容,其优先级也高于配置文件中的配置
2.@Profile标签的使用(指定什么环境时才生效)
使用用例
@Configuration
public class Myconfiguration {
@Bean
//重要点1:当配置文件是pro生效时才注入
@Profile("pro")
public Person getPerson(){
return new Person(18,"吴孟达","你好");
}
@Bean
//重要点2:当配置文件是test生效时才注入
@Profile("test")
public Dog getDog(){
return new Dog(18,"刘丹","你好");
}
}
用法总结:
1.@Profile("pro")可以用到方法上,当是pro配置文件生效时,才执行当前方法
2.@Profile("test")用在类上时,当是test配置文件生效时,类中的所有方法才生效
3.profile分组
application.properties中的配置如下:
#重点1:指定哪个配置组生效
spring.profiles.active=wmdProd
#重点2:定义配置组:spring.profiles.group.自定义配置组名[数字]=配置文件后缀
spring.profiles.group.wmdProd[0]=pro
spring.profiles.group.wmdProd[1]=test
#重点3:定义其他的配置组名
spring.profiles.group.wmdtest[0]=ppd
结论:
1.profile分组配置是同时加载多个配置文件,若在多个配置文件中都配置了某项配置,[数字],数字大的会覆盖数字小的
![](https://img2022.cnblogs.com/blog/1349485/202205/1349485-20220511223759934-339794892.png)