在应用程序开发中,配置文件是一个重要但反而总是被忽略掉的问题,因为它的解决方案很简单,而且在项目中往往被架构师一次性就写好了,其他的开发人员只是用就可以了,根本不用关心。但是初学者在从头搭建项目脚手架时,往往被这貌似简单的问题绊住手脚,浪费时间。今天花点时间说下我所理解的配置化
单独说配置文件其实非常简单,无非就是把一些程序中会用到的参数放置到文本文件中,方便之后修改,但是往往这些配置项是程序的关键参数,比如数据库连接地址、接口地址,连接池定义、程序的logo等。这些参数往往都与环境相关,在本地开发时、测试环境、灰度环境、生产环境都不一样,于是需要根据不同的环境用不同的配置文件,这就是我们的需求的来源
随便列举几种应用场景:
1、中间件地址不同。我们的应用都依赖于一个队列集群,不同环境下的队列集群地址不一样。
2、日志打印的位置不一样。在本地调试时,我的日志打印到一个目录下,但是在测试环境的主机上,我希望日志打印到另外一个目录下
3、希望根据不同的环境做不同的业务处理。业务需求说每天给[email protected]发送邮件,但是我只想生产环境发送真实的邮件,测试环境我希望只是返回一个成功字符串即可。
使用spring.profile.active
从以上的问题就可以看出,定义出能区分环境的变量非常关键,于是自然而然想到,在启动程序时传入一个参数,告诉程序目前是什么环境,程序根据不同的环境来加载不同的配置项。
于是,在spring的世界里,开发者们定义了spring.profile.active这个变量,并互