1、多环境选择
1.1、场景描述
以下两种场景下需要进行多环境选择:
- 不同环境运行相同代码
在应用开发的过程中,同一套程序通常会在多个不同环境下运行。如:开发、测试、生产环境等。每个环境的数据库地址、服务器端口号等配置都会不同。若根据不同环境,手动地去修改这些配置,就会显得繁琐且易错。此时我们更期望定义出几套不同的配置信息,在不同的环境中选择不同的配置。 - 不同环境执行不同实现类
在应用开发的过程中,有时不同的环境,需要调用的接口的实现类也是不同的。如开发一个具有短信发送功能的接口中的方法send()
:开发环境中,send()
方法仅需调用短信模拟器即可;而生产环境中,send()
则需要调用短信运营商所提供的短信发送接口。此时我们期望能开发两个相关的实现类去实现send()
方法,然后在不同的环境中自动选择不同的实现类去执行。
1.2、场景案例
场景案例1:假设生产环境(pro)与开发环境(dev)使用的上下文根与端口号不同。
场景案例2:假设生产环境发送短信的调用方式与测试环境不同。
2、多配置式多环境选择实现
2.1、解决场景案例1
- 为不同的环境创建不同的配置文件
注意,SpringBoot的yml文件命名有着严格的要求,只能以application[-{}].yml
的方式存在,如application-xxx.yml
。{}
中的内容,如xxx
,其实就是profile信息。
- 根据不同的环境分别为配置文件配置信息
# application-dev.yml server: port: 8081 servlet: context-path: /devpath
# application-pro.yml server