Spring BootSpringBoot中系统多环境配置
Posted 是馄饨呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring BootSpringBoot中系统多环境配置相关的知识,希望对你有一定的参考价值。
文章目录
系统多环境配置
在实际项目中,需要面对不同的运行环境,比如开发环境、测试环境、生产环境等,每个运行环境的数据库、Redis服务器等配置都不相同,每次发布测试、更新生产都需要手动修改相关系统配置。这种方式特别麻烦,费时费力,而且出错概率大。
Spring Boot为我们提供了更加简单方便的配置方案来解决多环境的配置问题。
1.创建多环境配置文件
创建多环境配置文件时,需要遵循Spring Boot允许的命名约定来命令,格式为application-profile.properties,其中profile为对应的环境标识。
我们在resources目录下分别创建application-dev.properties、application-test.properties、application-prod.properties三个配置文件,对应开发环境、测试环境和生产环境。
- application.properties为项目主配置文件,包含项目所需的所有公共配置。
- application-dev.properties为开发环境配置文件,包含项目所需的单独配置。
- application-test.properties为测试环境配置文件。
- application-prod.properties为生产环境配置文件。
2. 修改配置文件
通常情况下,开发环境、测试环境和生产环境使用的数据库是不一样的,所以接下来以不同环境配置不同数据库为例来演示多环境的配置。
首先我们修改application.properties,修改配置系统的启动端口:
server.port=8088
application.properties 文件包含项目所需的所有公共配置,这里配置系统的启动端口,所有环境的启动端口都是8088。
然后我们可以修改dev、test、prod的环境配置,比如我们增加数据库的连接配置。
首先在pom.xml文件中引入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
在dev文件中增加数据库连接:
# 指定数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据库jdbc连接url地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
# 数据库账号密码
spring.datasource.username=root
spring.datasource.password=123456
其他环境的配置文件修改对应的配置连接即可。
3. 多环境的切换
上面我们配置了多环境,那么在实际测试、运行过程中如何切换系统运行环境呢?
我们通过修改application.properties配置文件中的spring.profiles.active配置项来激活相应的运行环境。如果没有指定任何profile的配置文件,springboot默认会启动application-default.properties(默认环境)
指定项目的启动环境有以下3种方式:
-
配置文件指定项目启动环境
Spring Boot支持通过
spring.profiles.active
配置项目启动环境在application.properties配置文件中增加如下配置项
spring.profiles.active=prod
我们这里配置的是dev开发环境,启动项目后
- IDEA编译器指定项目启动环境
我们可以在IDEA的Run/debug Configuration 页面配置项目启动环境。
在项目运行时,可以通过VM options、Program arguments、Active profiles三个参数设置启动方式。
-
命令行启动指定项目环境
通过java -jar命令启动项目时,需要指定启动环境:
java -jar xxx.jar --spring.profiles.active=dev
在程序打包之后,可以在命令行中使用java-jar的方式启动,并设置启动参数
spring.profiles.active=dev
,以开发环境为默认配置。
以上是关于Spring BootSpringBoot中系统多环境配置的主要内容,如果未能解决你的问题,请参考以下文章
Spring Bootspringboot自定义系统的启动图案
Spring Bootspringboot自定义系统的启动图案