百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Spring Boot 入门系列(二十四)多环境配置,3分钟搞定

ztj100 2025-05-11 19:43 22 浏览 0 评论

之前讲过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入门系列(十五)Spring Boot 开发环境热部署的配置

Spring Boot入门系列(十三)如何实现事务,极简版!

Spring Boot入门系列(二十)快速实现Restful API 接口

Spring Boot 使用JdbcTemplate操作数据库,配置多数据源

Spring Boot入门系列(二十二)使用Swagger2构建RESTful API文档

相关推荐

使用Python编写Ping监测程序(python 测验)

Ping是一种常用的网络诊断工具,它可以测试两台计算机之间的连通性;如果您需要监测某个IP地址的连通情况,可以使用Python编写一个Ping监测程序;本文将介绍如何使用Python编写Ping监测程...

批量ping!有了这个小工具,python再也香不了一点

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友。在咱们网工的日常工作中,经常需要检测多个IP地址的连通性。不知道你是否也有这样的经历:对着电脑屏...

python之ping主机(python获取ping结果)

#coding=utf-8frompythonpingimportpingforiinrange(100,255):ip='192.168.1.'+...

网站安全提速秘籍!Nginx配置HTTPS+反向代理实战指南

太好了,你直接问到重点场景了:Nginx+HTTPS+反向代理,这个组合是现代Web架构中最常见的一种部署方式。咱们就从理论原理→实操配置→常见问题排查→高级玩法一层层剖开说,...

Vue开发中使用iframe(vue 使用iframe)

内容:iframe全屏显示...

Vue3项目实践-第五篇(改造登录页-Axios模拟请求数据)

本文将介绍以下内容:项目中的public目录和访问静态资源文件的方法使用json文件代替http模拟请求使用Axios直接访问json文件改造登录页,配合Axios进行登录请求,并...

Vue基础四——Vue-router配置子路由

我们上节课初步了解Vue-router的初步知识,也学会了基本的跳转,那我们这节课学习一下子菜单的路由方式,也叫子路由。子路由的情况一般用在一个页面有他的基础模版,然后它下面的页面都隶属于这个模版,只...

Vue3.0权限管理实现流程【实践】(vue权限管理系统教程)

作者:lxcan转发链接:https://segmentfault.com/a/1190000022431839一、整体思路...

swiper在vue中正确的使用方法(vue中如何使用swiper)

swiper是网页中非常强大的一款轮播插件,说是轮播插件都不恰当,因为它能做的事情太多了,swiper在vue下也是能用的,需要依赖专门的vue-swiper插件,因为vue是没有操作dom的逻辑的,...

Vue怎么实现权限管理?控制到按钮级别的权限怎么做?

在Vue项目中实现权限管理,尤其是控制到按钮级别的权限控制,通常包括以下几个方面:一、权限管理的层级划分...

【Vue3】保姆级毫无废话的进阶到实战教程 - 01

作为一个React、Vue双修选手,在Vue3逐渐稳定下来之后,是时候摸摸Vue3了。Vue3的变化不可谓不大,所以,本系列主要通过对Vue3中的一些BigChanges做...

Vue3开发极简入门(13):编程式导航路由

前面几节文章,写的都是配置路由。但是在实际项目中,下面这种路由导航的写法才是最常用的:比如登录页面,服务端校验成功后,跳转至系统功能页面;通过浏览器输入URL直接进入系统功能页面后,读取本地存储的To...

vue路由同页面重定向(vue路由重定向到外部url)

在Vue中,可以使用路由的重定向功能来实现同页面的重定向。首先,在路由配置文件(通常是`router/index.js`)中,定义一个新的路由,用于重定向到同一个页面。例如,我们可以定义一个名为`Re...

那个 Vue 的路由,路由是干什么用的?

在Vue里,路由就像“页面导航的指挥官”,专门负责管理页面(组件)的切换和显示逻辑。简单来说,它能让单页应用(SPA)像多页应用一样实现“不同URL对应不同页面”的效果,但整个过程不会刷新网页。一、路...

Vue3项目投屏功能开发!(vue投票功能)

最近接了个大屏项目,产品想在不同的显示器上展示大屏项目不同的页面,做出来的效果图大概长这样...

取消回复欢迎 发表评论: