品牌型号:联想ThinkPad X1
系统:Windows10家庭版
软件版本:Spring 5.3.7
做Java开发基本离不开Spring Boot,我们在项目迭代的过程中,经常要切换数据源、切换环境。在开发的时候,用本地环境,测试交付的话需要切换到测试环境,正式上线部署的时候我们需要切换到生产环境去。要是每一次切换环境都要手动改配置、改数据库连接,不仅仅麻烦,而且次数多了难免会有几次出错的情况。很多业务需对接多数据库,如读写分离、分库分表、多租户隔离,动态切换数据源是我们常用的技能,很多新手程序员刚上手Spring Boot的时候,不知道Spring Boot怎么切换数据源,Spring Boot怎么切换环境,接下来我们就来围绕这两个问题,带大家实操下,帮大家搞懂Spring Boot环境切换和数据源切换。
一、Spring Boot怎么切换数据源
我们项目在运行时会根据业务逻辑自动切换不同的数据库,例如在读取数据的时候走从库,写数据的时候走主库,或者是根据接口参数来切换不同的数据库,实现起来也简单,我们要添加下相关依赖。

为了贴近真实业务场景,在配置文件中配置主从多数据源,这里为了快速演示,就配置了主库master和从库slave。

数据源多了,为了管理方便,我们写个数据源枚举类来定义所有数据源名称。

创建个数据源上下文工具,这是比较关键的一步,为了保证线程安全,我们需要用ThreadLocal来保存当前线程要使用的数据源。

我们再写个DynamicDataSource继承spring的AbstractRoutingDataSource并且重写查找数据源方法。

剩下的,我们只需要写个配置类把我们配置的master、slave交给Spring去管理就可以实现数据源切换了,只需要写个测试类去简单测试下。

二、Spring Boot怎么切换环境
我们在开发的时候,经常要切换开发环境、测试环境还有生产环境,所以我们需要准备分环境配置。当然,需要一个主配置application.yml让所有分环境都会加载。

我们在开发的时候,习惯在application.yml中直接指定激活环境,这样的话我们就可以在开发时不用改命令,让指定配置直接生效,但是这种也只能适合开发阶段图省事,如果是正式部署上线,一定要记得改。

在部署项目的时候,打包后启动jar包时会去指定环境,这样就不会污染配置文件,我们可以用这个命令去启动。

也可以用一个配置文件来管理所有环境,不用去建多个配置文件,启动的时候,启动日志会显示The following 1 profile is active: "prod",能看到当前运行的是哪一套环境。

以上就是Spring Boot怎么切换数据源,Spring Boot怎么切换环境的全部内容了。Spring Boot切换数据源和切换环境是我们工作中经常要用到的,我们可以借助Spring Boot自带的AbstractRoutingDataSource来实现动态数据源切换。切换开发环境的时候,我们可以添加多个环境配置文件,也可以将多个环境配置都写在一个配置文件中,调试的时候,直接写死,正式部署上线的时候,取消写死,改为用启动命令来指定环境。