写在前面

最近由于项目要求,原先的项目只有开发环境的项目配置,后来不利于线上测试,于是,最近对于SpringBoot这部分多环境配置在网上查找了相关资料,并实现了配置,于是为了防止遗忘,特在此进行总结。

  在此,感谢以下博主的文章:

https://blog.csdn.net/qq_35139965/article/details/82255479

https://blog.csdn.net/weixin_33347597/article/details/81039153

好啦,废话不多说,开启正文(好像很正式的样子呢。。。。。。)

SpringBoot多环境配置文件

下面以一个小案例,进行说明。

如图所示,下图是案例中的三个配置文件,其中,

application.yml是启动服务时,服务器会自动加载的配置文件,

application-dev.yml 表示的是开发环境的配置文件,

application-prod.yml 表示的是生产环境的配置文件,

对于,dev和prod这两个文件在启动服务时,服务器不会自动加载,那么在不同的环境中时怎么调用不同的文件的呢?

主要有以下两种方式:

方式一:通过修改配置文件 application.yml中Spring.profile.active的值,来指定加载的配置,

也就是说,如果Spring.proflie.active=dev,则在启动服务之后,服务器就会加载application-dev.yml,若值为test或者prod,修改方式一致。

下面上图说明:

方式二:使用命令启动服务,命令中带参数方式(此方式可以没有application.yml文件)

具体操作步骤如下:

1>  进入到项目目录下,先用mvn install命令对项目进行打包,执行完此步骤后,会在项目对应的target目录下生成该项目对应的jar包

2>  进入target目录,执行命令:java -jar 生成的jar包 --spring.profiles.active=prod

通过此命令之后,项目就会调用application-prod.yml配置文件,即以生产环境的配置要求启动服务。同理,若是开发环境,只需将prod改为dev即可。

方式三:此种方式是根据方式一延伸出的,更为灵活

具体步骤如下:

1> application.yml中将spring.profiles.active的值改成spring.profiles.active=@activatedProperties@,这里的@activatedProperties@是一个变量对应pom文件里的环境配置。

下面为pom文件的配置<profiles>  <profile>

<id>dev</id>
<properties>
<!-- 环境标识,需要与配置文件的名称相对应 -->
<activatedProperties>dev</activatedProperties>
</properties>
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
                   <!-- 测试环境 --> 
<activatedProperties>test</activatedProperties>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
                   <!-- 生产环境 -->
<activatedProperties>prod</activatedProperties>
</properties>
</profile>
</profiles>  
 
对这段代码做下说明:  
首先在maven中配置了两个环境的配置文件,一个测试环境test,一个生产环境prod;
其中
<profiles.active></profiles.active>  是变量的key,test是变量的value

注意:<activatedProperties>dev</activatedProperties>中的dev与配置文件名称application-dev.yml要一致
activatedProperties名称对应application.properties配置文件中的spring.profiles.active=@activatedProperties@

当maven打包时会用pom文件里<activatedProperties>dev</activatedProperties>中的值替换掉application.properties配置文件中的@activatedProperties@

2>  执行Maven打包命令mvn clean package,观察控制台日志

已经构建成功,刷新一下项目,target会生成SpringbootMybatis-0.0.1-SNAPSHOT.jar包。

可能出现的问题

1.=='@' that cannot start any token. (Do not use @ for indentation)
在本地启动该项目时有时候会报如下错误

found character '@' that cannot start any token. (Do not use @ for indentation)
in 'reader', line 4, column 11:
name: @profiles.active@

意思是识别不了@profiles.active@这个变量,这是因为这个变量没有被替换成我们需要的参数,如test,prod等,所以在本地启动时要加上参数启动,这样springboot会自动替换掉这个变量。

作者使用的是idea,所以启动springboot时在右上Edit Configurations-->Active Profiles 增加一个参数,参数值为你需要运行的环境名称,如test

注:上述中的application-dev.yml、application-prod.myl等只是演示案例中名字,并非所有项目都是如此,还请各位以实际项目为主。

Spring Boot项目在多环境下(开发、生产或测试环境)调用不同配置文件方式的更多相关文章

  1. 读取spring boot项目中resource目录下的文件

    在开发中, 我们常常要将我们的配置文件或者模板文件放在我们的resource目录中. 如下 而在spring boot的项目中, 我们运行的是一个jar包, 并没有解压 所以当我们使用以下方式获取文件 ...

  2. 在linux环境下搭建java web测试环境(非常详细!!)

    一.项目必备软件及基本思路 项目必备:虚拟机:VMware Workstation (已安装linux的 CentOS6.5版本) 项目:java web项目 (必须在本地部署编译后选择项目的webR ...

  3. 在linux环境下搭建java web测试环境(非常详细!)

    一.项目必备软件及基本思路 项目必备:虚拟机:VMware Workstation (已安装linux的 CentOS6.5版本) 项目:java web项目 (必须在本地部署编译后选择项目的webR ...

  4. 基于 intellij IDEA 快速搭建Spring Boot项目

           在<一步步搭建 Spring Boot maven 框架的工程>一文中,已经介绍了如何使用Eclipse快速搭建Spring Boot项目.由于最近将开发工具由Eclipse ...

  5. VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

  6. [转]VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

  7. 后端开发实践——Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  8. Spring Boot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip

    spring-boot-assembly 在spring boot项目中使用maven profiles和maven assembly插件根据不同环境打包成tar.gz或者zip 将spring bo ...

  9. Myeclipse下使用Maven搭建spring boot项目

    开发环境:Myeclipse2017.JDK1.6.Tomcat 8.0.Myeclipse下使用Maven搭建spring boot项目,详细过程如下: 1. New -> Project.. ...

  10. 后端开发实践:Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

随机推荐

  1. JAVA多线程线程同步问题

    线程同步 在多线程的编程环境下,可能看着没有问题的代码在运行几千上万或者更多次后,出现了一些看着很奇怪的问题,出现这样的问题的原因就是可能会有两个或者更多个线程进入了同一块业务处理代码中导致了判断失效 ...

  2. Spring Data JPA 梳理 - 使用方法

    1.下载需要的包. 需要先 下载Spring Data JPA 的发布包(需要同时下载 Spring Data Commons 和 Spring Data JPA 两个发布包,Commons 是 Sp ...

  3. 对于java的Sting.intern()的一些注意

    今天翻看书时遇到了这样一个问题,对于String.intern()方法又有了一些认识和看法.首先我们看它的api 大意就是intern()方法会在常量池中记录首次出现的实例引用,但是在jdk1.6中却 ...

  4. (三)分布式数据库tidb-隔离级别详解

    tidb隔离级别详解: 1.TiDB 支持的隔离级别是 Snapshot Isolation(SI),它和 Repeatable Read(RR) 隔离级别基本等价,详细情况如下: ● TiDB 的 ...

  5. 利用Dockerfile部署SpringBoot项目

    利用Dockerfile部署SpringBoot项目 1.创建一个SpringBooot项目并且打成jar包 2.在Linux中创建一个文件夹,来做docker测试 [root@izwz90lvzs7 ...

  6. 使用golang插入mysql性能提升经验

    前言 golang可以轻易制造高并发,在某些场景很合适,比如爬虫的时候可以爬的更加高效.但是对应某些场景,如文件读写,数据库访问等IO为瓶颈的场合,就没有什么优势了. 前提基础 1.golang数据库 ...

  7. 安装Office Visio 提示Office 16 Click-to-Run Extensibility Component

    今天在安装 Office Visio 2016 时,点击安装程序,出现以下错误:   出现这个问题的原因就是你的电脑以前安装过32位的office,卸载时,注册表没有清理干净. 解决方案: 在win1 ...

  8. SpringBoot第二十五篇:SpringBoot与AOP

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   作者在实际 ...

  9. 06-01 DeepLearning-图像识别

    目录 深度学习-图像识别 一.人脸定位 二.手工提取特征的图像分类 2.1 识图认物 2.2 传统分类系统的特征提取 2.3 计算机眼中的图像 2.4 什么是图像特征? 2.5 卷积运算 2.6 利用 ...

  10. 洛谷 1552 [APIO2012]派遣

    题目背景 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 题目描述 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者都有且仅有一个上级.为保密 ...