之前讲过Spring Boot 的系统配置和自定义配置,实现了按照实际项目的要求配置系统的相关熟悉。但是,在实际项目开发过程中,需要面对不同的环境,例如:开发环境,测试环境,生产环境。各个环境的数据库、Redis服务器等配置有可能不同,这就需要频繁的手动修改相关系统配置。这种方式特别麻烦,费时费力,而且出错的概率还极大。庆幸的是,Spring Boot 为我们提供了更加简单方便的配置方案来解决多环境的配置问题,下面就来聊一聊Spring Boot 系统配置之多环境配置实现。

一、增加配置文件

首先,在resource 目录下,分别创建 application-dev.properties、application-test.properties 和 application-production.properties 三个配置文件对应:开发环境、测试环境 和 生产环境。如下图所示:

根据开发、测试、生产等三个常见的环境分成了三个配置文件,分别配置上面三个环境的各自的配置项。

说明:

  application.properties 为项目主配置文件,包含项目所需的所有公共配置。

  application-dev.properties 为开发环境配置文件,配置开发环境所需的单独配置。

  application-test.properties 为测试环境配置文件。

  application-production.properties 为生产环境配置文件。

二、各环境相关配置

1、修改各个环境的配置文件

这里以不同环境的数据库配置不同为例,配置数据库的不同连接,配置信息如下:

# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/zwz_test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

上面这个配置是开发环境 application-dev.properties 配置文件。其他的配置文件修改对应的配置连接即可,这里这里不重复了。

2、修改 application.properties 主配置文件

application.properties 为项目主配置文件,包含项目所需的所有公共配置,其他配置存放在application-dev.properties 等配置文件中。

# 服务器端口配置
server.port=8088 # 数据源相关配置,这里用的是阿里的druid 数据源
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.stat-view-servlet.allow=true # mybatis 相关配置
mybatis.type-aliases-package=com.weiz.pojo
mybatis.mapper-locations=classpath:mapper/*.xml
mapper.mappers=com.weiz.utils.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
# 分页框架
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
# 开发环境
spring.profiles.active=dev
# 测试环境
# spring.profiles.active=test
# 生产环境
# spring.profiles.active=production

3、在 application.properties 激活不同环境的配置文件

在application.properties 配置文件中,增加如下配置,指定对应的环境目录。

# 开发环境
spring.profiles.active=dev
# 测试环境
# spring.profiles.active=test
# 生产环境
# spring.profiles.active=production

文件中的 spring.profiles.active 即为 指定当前的项目的环境。
选择使用对应的环境配置,只需要在application.properties 中加上 spring.profiles.active=test ,指定配置文件的后缀,就可以使用对应环境的配置。

三、启动测试

启动项目,在启动的时候,在系统启动日志中,可以看到加载的是哪个环境的配置文件。

从上面的启动日志,可以看到系统目前启动的是dev 开发环境。调用相关的接口,也可以查到系统最终连接的是哪个数据库。

四、启动项目指定环境

1、运行启动项目指定环境

在项目开发过程中,通过修改配置文件就能非常轻松的切换项目环境,但是打包部署时,能否指定对应的环境呢?答案是肯定的,下面我们来看看怎么快捷打包部署不同的环境:

java -jar myapp.jar --spring.profiles.active=dev

我们平时启动打包的jar包时,可能使用的是 java -jar myjavaapp.jar来启动项目,如果我们需要制定特定的环境启动只需要加上一个启动属性即可轻松完成一个jar在不同环境通用的效果。

2、idea 运行项目指定环境

idea运行项目是,指定项目环境也特别简单,idea配置VM参数即可。在VM选项中输入-Dspring.profiles.active=dev,表示激活dev环境;然后重启工程访问即可。

最后

以上,就把Spring Boot 项目配置多环境介绍完了,实现起来比较简单。。

这个系列课程的完整源码,也会提供给大家。大家关注我的微信公众号(架构师精进),回复:springboot源码。获取这个系列课程的完整源码。

Spring Boot 入门系列(二十四)多环境配置,3分钟搞定!的更多相关文章

  1. Spring Boot入门系列(十四)使用JdbcTemplate操作数据库,配置多数据源!

    前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.如何实现事物控制.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/c ...

  2. Spring Boot入门系列(十六)使用pagehelper实现分页功能

    之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.接下来要说一说Mybatis 的分页 ...

  3. Spring Boot入门系列(十)如何使用拦截器,一学就会!

    前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...

  4. Spring Boot入门系列(十八)整合mybatis,使用注解的方式实现增删改查

    之前介绍了Spring Boot 整合mybatis 使用xml配置的方式实现增删改查,还介绍了自定义mapper 实现复杂多表关联查询.虽然目前 mybatis 使用xml 配置的方式 已经极大减轻 ...

  5. Spring Boot入门系列(十九)整合mybatis,使用注解实现动态Sql、参数传递等常用操作!

    前面介绍了Spring Boot 整合mybatis 使用注解的方式实现数据库操作,介绍了如何自动生成注解版的mapper 和pojo类. 接下来介绍使用mybatis 常用注解以及如何传参数等数据库 ...

  6. Spring Boot入门系列(十五)Spring Boot 开发环境热部署

    在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况, ...

  7. 学习Spring Boot:(二十四)多数据源配置与使用

    前言 随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据. 正文 JdbcTemplate 多数据源 配 ...

  8. Spring Boot教程(二十四)Web应用的统一异常处理

    我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来 ...

  9. Spring Boot入门系列(二十)快速打造Restful API 接口

    spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...

  10. Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!

    之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...

随机推荐

  1. python 环境遇到的报错

    pipenv install -r requirements.txt 时遇到错误: `Command "python setup.py egg_info" failed with ...

  2. vulnhub-DC:7靶机渗透记录

    准备工作 在vulnhub官网下载DC:7靶机DC: 7 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 已经知道了靶 ...

  3. 洛谷P2504题解

    题目 瓶颈生成树的裸题.可以查看这个来获取更多信息. 他问的是能够在所有树上自由穿梭的猴子个数,那我只需要算出这张图上最小生成树中权值最大的边,和每个猴子的最大跳跃长度进行比较即可. 因为我用的是 \ ...

  4. RHCE_DAY07

    文件共享服务FTP介绍 FTP(File Transfet Protocol):文件传输协议 FTP是一种在互联网中基于TCP协议端到端的数据传输协议 基于C/S架构,默认使用20.21号端口 端口2 ...

  5. C++ //继承同名成员处理方式

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 pu ...

  6. 【LeetCode】316. 去除重复字母

    316. 去除重复字母 知识点:栈:单调 题目描述 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次.需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置). 示例 输 ...

  7. .Net Core如何优雅的实现中间件

    在.Net Core的源码中,很多地方都有中间件的地方,Kestrel Server和Asp.net Core 等都用了中间件的设计,比如在Kestrel Server中,Http协议的1.0, 1. ...

  8. 深入了解jvm-2Edition-虚拟机字节码执行引擎

    1.概述 Java虚拟机规范制定了虚拟机字节码执行引擎的概念模型,本章主要从概念模型层次来探究虚拟机的方法调用和字节码执行. 方法调用中,最核心的,是如何确定调用的方法,也就是方法的分派. 字节码执行 ...

  9. Check Directory Existence in Shell

    The following command in one line can check if a directory exists. You can check the return value (& ...

  10. 把对象交给spring管理的3种方法及经典应用

    背景 先说一说什么叫把对象交给spring管理.它区别于把类交给spring管理.在spring里采用注解方式@Service.@Component这些,实际上管理的是类,把这些类交给spring来负 ...