spring boot 环境配置(profile)切换
Spring Boot 集成教程
- Spring Boot 介绍
- Spring Boot 开发环境搭建(Eclipse)
- Spring Boot Hello World (restful接口)例子
- spring boot 连接Mysql
- spring boot配置druid连接池连接mysql
- spring boot集成mybatis(1)
- spring boot集成mybatis(2) – 使用pagehelper实现分页
- spring boot集成mybatis(3) – mybatis generator 配置
- spring boot 接口返回值封装
- spring boot输入数据校验(validation)
- spring boot rest 接口集成 spring security(1) – 最简配置
- spring boot rest 接口集成 spring security(2) – JWT配置
- spring boot 异常(exception)处理
- spring boot 环境配置(profile)切换
- spring boot redis 缓存(cache)集成
概述
本文介绍spring boot项目中环境配置切换的过程。
在实际的项目开发中,经常需要不同的环境配置,如开发时不能直接连生产环境的数据库,而上线时就需要连生产环境的数据库。这就要求项目能够切换环境配置。
spring boot项目中,application.properties是配置文件,实际上我们还可以引入不同环境的配置文件,如:application-dev.properties,application-prod.properties,通过指定spring.profiles.active的值切换配置文件,比如在application.properties中指定:
spring.profiles.active=xxx
就可加载application-xxx.properties配置。
切换环境的常用方法
1.上面提到的application.properties设置spring.profile.active的值。
2.命令行中指定参数
通过指定jvm系统参数
java -jar -Dspring.profiles.active=prod springboot-profile-demo 0.0.1-SNAPSHOT.jar
通过指定应用参数
java -jar --spring.profiles.active=dev springboot-profile-demo 0.0.1-SNAPSHOT.jar
项目内容
创建一个简单的spring boot项目,引入不同的环境配置,用不同方法切换环境,访问接口打印当前环境。
要求
- JDK1.8或更新版本
- Eclipse开发环境
如没有开发环境,可参考前面章节:[spring boot 开发环境搭建(Eclipse)]。
项目创建
创建spring boot项目
打开Eclipse,创建spring boot的spring starter project项目,选择菜单:File > New > Project ...,弹出对话框,选择:Spring Boot > Spring Starter Project,在配置依赖时,勾选web,完成项目创建。
项目配置
如下图,除了application.properties,还添加了:
application-dev.properties- 开发环境配置application-prod.properties- 生产环境配置application-test.properties- 测试环境配置

application.properties文件内容
## 生产/开发等环境配置, 加载不同的配置文件
spring.profiles.active=dev
## 服务器端口,默认是8080
server.port=8096
application-dev.properties文件内容
## profile 名称
profile.name=dev
application-prod.properties文件内容
## profile 名称
profile.name=prod
application-test.properties文件内容
## profile 名称
profile.name=test
代码实现
项目目录结构如下图,我们实现了一个接口,访问此接口打印当前环境名称。

HelloController类
通过@Value注解读取profile.name,赋给profileName。访问/hello接口打印当前环境名称。
@RestController
public class HelloController {
@SuppressWarnings("unused")
private static final org.slf4j.Logger log = LoggerFactory.getLogger(HelloController.class);
// 当前环境配置名称
@Value("${profile.name}") //读取当前环境配置名称
private String profileName;
@RequestMapping(value="/hello", method = RequestMethod.GET, produces="application/json")
public String hello() {
return "当前环境:" + profileName;
}
}
运行
修改application.properties文件中的spring.profiles.active,加载对应的配置文件,然后访问接口/hello
## 生产/开发等环境配置, 加载不同的配置文件
spring.profiles.active=test
Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> spring boot app 运行程序。 打开Postman访问接口,运行结果如下:

总结
spring boot 环境配置(profile)切换的更多相关文章
- spring boot环境配置以及开发工具选择(Spring一)
首先安装java jdk jdk的安装参考:https://blog.csdn.net/zhys0902/article/details/79499329配置效果如下: 接下来是maven的相关配置 ...
- spring boot环境配置
Eclipse+Maven创建webapp项目<一> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...
- Spring boot 的profile功能如何实现多环境配置自动切换
通常服务端应用开发需要经过以下几个流程: 开发 -> 测试 -> RC验证 -> 上线 这就涉及到四个不同的环境,开发环境.测试环境.RC环境以及生产环境,为了避免不同环境之间相互干 ...
- Spring Boot 属性配置&自定义属性配置
在使用spring boot过程中,可以发现项目中只需要极少的配置就能完成相应的功能,这归功于spring boot中的模块化配置,在pom.xml中依赖的每个Starter都有默认配置,而这些默认配 ...
- Spring Boot属性配置&自定义属性配置
一.修改默认配置 例1.spring boot 开发web应用的时候,默认tomcat的启动端口为8080,如果需要修改默认的端口,则需要在application.properties 添加以下记录: ...
- Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...
- 玩转spring boot——properties配置
前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连 ...
- Spring Boot 环境变量读取 和 属性对象的绑定
网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...
- Spring Boot 属性配置和使用
Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot ...
随机推荐
- CSS-fontface
@font-face { font-family: <identifier>; src: <fontsrc> [, <fontsrc>]*; <font> ...
- Heap(堆)的基础知识入门
堆 逻辑结构: 1 / \ 1 3 / \ / \ 4 5 6 null 物理结构; 1.首先堆是一个完全二叉查找书(Co ...
- Prometheus Operator 架构【转】
本节讨论 Prometheus Operator 的架构.因为 Prometheus Operator 是基于 Prometheus 的,我们需要先了解一下 Prometheus. Prometheu ...
- 编程题目:求幂 (python)
数值的整数次方 效率0(lgn) 这个求幂函数无论 基数 或 次方 为 正数或者为负数都是成立的.只是他们都为整数罢了. 注意了哦,这个代码必须要用python3才能运行正确,因为python3的 整 ...
- 安卓10GB内存旗舰手机的普及,能成为拯救DRAM厂商的救命稻草吗?
你对2019年手机即将展现出的全新变化,有哪些期待?是全新的处理器.更名副其实的全面屏,还是愈发强大的拍照功能,抑或折叠屏幕?但不管你有怎样的期待,手机厂商似乎总是"不解风情".常 ...
- CC26XX开发
[CC26XX开发] 2016-01-26 [CC2650 入门] CC2650 sensortag入门 http://processors.wiki.ti.com/index.php/CC2650_ ...
- 010.Oracle数据库 , ORDER BY 按升序降序排序
/*Oracle数据库查询日期在两者之间*/ SELECT DISTINCT ATA FROM LM_FAULT WHERE ( OCCUR_DATE BETWEEN to_date( '2017-0 ...
- POJ 2796:Feel Good 单调栈经典题
Feel Good Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11626 Accepted: 3212 Case T ...
- JS - 获取任意一天的0点和23:59:59时间
转载自 https://www.cnblogs.com/sk-3/archive/2019/07/23/11232750.html 使用了setHours() 方法 setHours() 方法用于设置 ...
- Typecho博客添加版权说明
版权声明是指作品权利人对自己创作作品的权利的一种口头或书面声明,一般版权声明应该包括权利归属.作品使用准许方式.责任追究等方面的内容.诸如平时看文章时最后会有一个严禁转载的说明,其实这就是版权声明. ...