p55-56 profile环境隔离
-
目的:环境隔离能力,快速切换开发,测试,生产环境
-
- 标识环境:指定哪些组件、配置在哪个环境生效
-
- 切换环境:这个环境对应的所有组件和配置就应该生效
-
-
dev(开发环境),test(测试环境),prod(生产环境)
-
1.查看是否放入容器中,标注注解@slf4j
Cat cat = context.getBean(Cat.class); Dog dog = context.getBean(Dog.class); Pig pig = context.getBean(Pig.class); Sheep sheep = context.getBean(Sheep.class); log.info("组件cat: {}",cat); log.info("组件dog: {}",dog); log.info("组件pig: {}",pig); log.info("组件sheep: {}",sheep);
-
2.多环境识别能力
在属性类中标记注解
@Profile({"dev"})-->Cat组件
@Profile({"test"})-->Dog组件
@Profile({"prod"})-->Pig组件
@Profile({"default"})-->Sheep组件
该环境标记不标记是一样的
只有在默认环境下的default组件
激活哪个环境哪个生效,没有激活则不会生效 -
-
3.激活环境
-
1.配置文件激活
application.properties中写上spring.profiles.active=dev
环境激活
console:2023-07-20T17:26:28.789+08:00 INFO 2108 --- [ main] com.SpringBoot3.Application : dev组件cat: Cat{id=0, name='null'}
注意:标注profile("default")
情况下sheep.class
不会激活,不标注的情况下则激活
激活多个配置文件spring.profiles.active=dev,test
-
2.命令行激活
注意:需要将程序停止运行
激活命令:--spring.profiles.active=prod
2023-07-20T17:35:22.343+08:00 INFO 9140 --- [ main] com.SpringBoot3.Application : prod组件pig: Pig{id=null, name='null', age=0}
-
3.特殊情况(嵌套环境?)
- 配置类配置激活环境
@Profile("test") @Configuration public class MyConfig { @Profile("dev") @Bean public Cat cat() { return new Cat(); } }
此情况下必须在配置文件application.properties中同时激活
dev,test
才能使用cat组件
spring.profiles.active=test,dev
-
-
4.包含环境(总是要生效的环境)
spring.profiles.include=test,prod
2023-07-20T17:54:12.734+08:00 INFO 7732 --- [ main] com.SpringBoot3.Application : test组件dog: Cat{id=0, name='null'}
2023-07-20T17:54:12.737+08:00 INFO 7732 --- [ main] com.SpringBoot3.Application : prod组件pig: Pig{id=null, name='null', age=0}
2023-07-20T17:54:12.738+08:00 INFO 7732 --- [ main] com.SpringBoot3.Application : default组件sheep: Sheep{id=null, name='null', age=0}
-
5.分组激活
1.一般写法
spring.profiles.group.haha=test,dev spring.profiles.group.hehe=default,prod
激活时只需要写出spring.profiles.active=haha
激活haha组便可以激活dev,test
组
2.[]
写法
spring.profiles.group.haha[0]=test spring.profiles.group.haha[1]=dev
-
6.配置文件使用profile功能
application-{profile}.properties
可以作为指定环境的配置文件,不可以写激活语句。
application-{profile}.properties
:指定环境配置文件,激活指定环境生效优先级更高
激活哪个环境生效哪个环境的端口,不会受到主程序影响
例如:application-dev.properties
-
总结
环境激活- 配置激活指定环境; 配置文件
spring.profiles.active=production,hsqldb
- 也可以使用命令行激活。–spring.profiles.active=dev,hsqldb
- 还可以配置默认环境; 不标注@Profile 的组件永远都存在。
- 以前默认环境叫default
2.切换默认环境:不推荐spring.profiles.default=test
- 以前默认环境叫default
- 推荐使用激活方式激活指定环境