欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

程序员文章站 2022-07-02 15:58:42
前面的文章已经介绍了CentOS部署SpringBoot项目从0到1的详细过程,包括Linux安装ftp、Tomcat以及Java jdk的全部过程。这篇文章主要介绍关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时Maven控... ......

前面的文章已经介绍了centos部署springboot项目从0到1的详细过程,包括linux安装ftp、tomcat以及java jdk的全部过程。这篇文章主要介绍关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时maven控制方式。

关于springboot基础矿建搭建有疑问的。可以看我之前的一篇文章。详解intellij idea搭建springboot

v环境介绍

正常来讲,一个软件的开发上线的流程大部分都是分为三个环境,依次是开发、测试、上线。

开发环境(dev):

开发环境是指的是咱们本地跑的环境。

测试环境(qa):

一般是克隆一份生产环境的配置,qa即test。

生产环境(prod)

正式提供对外服务的,即是真实环境。

关于三个环境的切换已然标准化了,这里只是一笔带过一下,因为下文中的配置文件会跟三个环境有关联。相信所有人都不会对这三个环境陌生的。

今天主要讲讲关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时maven控制方式。首先介绍部署时切换的方式。

v部署时切换

1.1 配置dev和qa环境数据,以备测试。

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

1.2 新增properties文件

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

如上图:在application.properties文件的同级目录依次创建application-dev.properties,application-qa.properties,application-pro.properties这三个配置文件,dev、qa和prod分别对应上文"环境介绍"中的三个环境。

1.3 配置各个properties文件

在application.properties中添加配置切换选项,例如切换到dev环境的配置为:spring.profiles.active=dev

依次在application-dev.properties,application-qa.properties,application-pro.properties配置相关datasource连接信息。

例如application-dev.properties配置:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest
spring.datasource.username=root
spring.datasource.password=***********
spring.datasource.driver-class-name=com.mysql.jdbc.driver

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

1.4 本地环境

当设置application.properties中spring.profiles.active=dev时,则此时启动连接的是dev环境。

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

如上图,此时运行得到的结果与配置文件一致,是dev环境的数据。

1.5 部署测试环境

部署测试环境,关于部署有不了解的可以看看《centos部署springboot项目从0到1》,部署时切换到qa环境。

java -jar zuche-0.0.1-snapshot.jar --spring.profiles.active=qa --server.port=2008

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

可以看到日志中显示的内容与预期一致,spring.profiles.active设置为qa, 端口设置为2008。

运行效果如下图,部署以后连接的qa环境。

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

vmaven控制打包时切换

2.1 设置项目对象模型pom.xml

2.1.1 添加profiles到pom.xml中,profiles节点是和build同级的。

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activebydefault>true</activebydefault>
            </activation>
        </profile>
        <profile>
            <id>qa</id>
            <properties>
                <env>qa</env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <env>prod</env>
            </properties>
        </profile>
    </profiles>

activation表示的是可以用这样的命令来触发profile,true表示dev是默认的profile, 这样本地直接ide启动项目的时候就是连接的dev环境。

2.1.2 添加filters节点。

        <filters>
            <filter>src/main/resources/application-${env}.properties</filter>
        </filters>

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

2.2 更新application.properties。

spring.profiles.active=@env@

注意@env@中的env可以理解为一个变量,需要与2.1.2中设置的${env}对应上。

2.3 添加maven打包命令

clean package -p qa -d maven.test.skip=true

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

-d maven.test.skip=true不执行测试用例,也不编译测试用例类。

2.4 执行maven命令

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

查看jar包的application.properties文件的spring.profiles.active,看maven命令是否生效。

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

如上图,spring.profiles.active=qa

2.5 部署tomcat

java -jar zuche-0.0.1-snapshot.jar --server.port=2008

SpringBoot(三)通过properties实现多个数据库环境自动切换配置

maven打包时已经设置了qa环境,部署命令中不需要再指明qa环境。

v博客总结

本文通篇讲的主要是围绕springboot部署jar包的两种方式,至于war包,以后有时间再说说。


作  者:
出  处:
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【】一下。您的鼓励是作者坚持原创和持续写作的最大动力!