SpringBoot多环境选择
- 什么是多环境选择?
在项目研发过程中,我们分为不同的环境:开发环境、测试环境、线上环境;这三个环境明显是不一样的,甚至所使用的数据库、调用的接口都是不一样的,原因(部分)如下:
- 当开发完一个功能之后,交给测试组进行测试,若未分库,测试过程中删除或修改的数据则会对研发组开发后面的功能造成困扰。
- 假定要做一个短信发送的功能,开发完成后交给测试组进行测试;测试组测试100w高并发,调用实际接口发送短信,若一条短信0.01元,这次的测试费用将是1w元,这显然是不行的。
因此,我们需要区分各种环境,为我们的项目创造利益,节省成本。
- 多环境选择的实现方式
-
多配置文件实现方式
主配置文件:
application.yml
spring: profiles: active: dev
定义
application-dev.yml
:# 对开发环境进行配置 server: port: 8080 servlet: context-path: /dev
定义
application-pro.yml
# 对线上环境进行配置 server: port: 80 servlet: context-path: /pro
可以通过修改主配置文件中的
active
切换配置文件 -
单配置文件实现方式
主配置文件
application.yml
spring: profiles: active: dev --- #分隔符,必须写 #开发环境配置 spring: profiles: dev service: port: 8080 servlet: context-path: /dev --- #线上环境配置 spring: profiles: pro service: port: 80 servlet: context-path: /pro
可以通过修改主配置文件中的
active
切换配置文件
- 如何在不同的环境执行不同的代码(实现类)
-
接口类:
public interface SeedMessage { public String sendSMS(); }
-
开发环境实现类
@Service @Profile("dev") public class DevSeedMessageImpl implements SeedMessage { @Override public String send(){ return "开发环境发送短信": } }
-
线上环境实现类
@Service @Profile("pro") public class ProSeedMessageImpl implements SeedMessage { @Override public String send(){ return "线上环境发送短信"; } }
注:
@Profile("dev")
是重点,依靠它才能找到我们对应要执行的代码