SpringBoot Profile多环境配置方式
作者:Do?My?Love 发布时间:2023-12-14 01:44:24
Profile多环境配置
我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、redis地 址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。
对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,而Spring Boot 就更简单了,打好包后,只需在不同的环境下启动时候指定读取的配置文件就可以了。
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile} 值。 如:spring.profiles.active=test就会加载application-test.properties配置文件内容。
① application.properties:
# 在application.properties文件中通过spring.profiles.active属性来设置哪个配置文件会被加载
spring.profiles.active=dev
② application-dev.properties:
server.port=8081branch=dev
③ application-prod.properties:
server.port=8083branch=prod
④ application-test.properties:
server.port=8082branch=test
⑤ 测试类:
@Controller
@RequestMapping("/test")
public class TestController {
@Value("${branch}")
private String branch;
@ResponseBody
@GetMapping("/branch")
public String test(){
return branch;
}
}
⑥ 如果我们直接启动项目,那么启动的就是dev环境,因为我们在application.properties中配置的是dev
⑦ 打包项目(clean,install),打好包后,启动时指定读取的配置文件
java -jar springboot-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
Profile配置详解
1.问题
开发环境和真实的项目环境是不样的
8080
80
2.为什么要使用profiles
在开发中,一般有两种环境
1,生产环境 [项目上线,客户在使用中,就是生产环境]
2,开发环境[就是开发环境,不解释]
有时候开发环境和生产环境的配置方法是不一样的,那么如何快速的切换呢,这里就要使用profiles文件
3,创建application-dev.properties
server.port=8888
4,创建application-pro.properties
server.port=9999
5,配置application.properties
# spring.profiles.active=pro
6,配置application.yml[和第5点任选一个]
#配置激活哪一个配置文件
spring:
profiles:
active:
- dev
7,删除application.yml/.properties文件如何运行
右键运行–>Run Configruations
进入设置运行时的虚拟机参数
-Dspring.profiles.active=pro
8,去掉application.properties的jar包运行方式
9,yml文件的多配置块的集成切换
#主配置,启动哪个配置文件
spring:
profiles:
active:
- dev
#插入开发配置文件
---
spring:
profiles: dev
server:
port: 8888
#插入生产的配置文件
---
spring:
profiles: pro
server:
port: 9999
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://hengheng.blog.csdn.net/article/details/123939358


猜你喜欢
- 本文实例讲述了Java定义泛型方法。分享给大家供大家参考,具体如下:一 点睛1 如果定义类、接口是没有使用类型形参,但定义方法时想自己定义类
- synchronized关键字顾名思义,是用于同步互斥的作用的。这里精简的记一下它的使用方法以及意义:1. 当synchronized修饰
- 本文实例为大家分享了java使用集合实现通讯录的具体代码,供大家参考,具体内容如下代码有些繁琐,只适合初学者。项目1java通讯录方法(声明
- 环境:springcloud Hoxton.SR11本节主要了解系统中的谓词与配置的路由信息是如何进行初始化关联生成路由对象的。每个谓词工厂
- Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。
- Android-webview和js互相调用Android 和 H5 都是移动开发应用的非常广泛。市面上很多App都是使用Android开发
- 本文实例讲述了Android实现调用震动的方法。分享给大家供大家参考,具体如下:调用Android系统的震动,只需要一个类 那就是Vibra
- 本文章是基于鸿洋的Android 自定义View (一) 的一些扩展,以及对Android自定义View构造函数详解里面内容的一些转载。首先
- 前言我们之前讲述的动画都需要主动触发或者是重复执行,那有没有自己触发动画的组件呢?这样我们就可以在 StatelessWidget 里直接使
- 本文开始做一个网上商城的项目,首先从搭建环境开始,一步步
- 使用java语言用集合存储数据实现学生信息管理系统,在控制台上编译执行可以实现基本的学生信息增加、删除、修改、查询功能IO版可以参考我的另外
- 今天重新装了编译器,结果崩无极限,真是日了狗了了。刚刚才知道问题在哪边。好了,说正事,对于ios开发我没接触,不是很了解,百度了半天,差不多
- 1.CAS1)CAS概念CAS时Compare And Swap缩写,即比较与交换是用于实现多线程同步的原子指令,它将内存位置的内容与给定值
- 本文实例讲述了C#实现缩放字体的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Colle
- 前段时间因为看JUC的源码,里面有大量关于unsafe的操作,所以就来看看了.写点笔记总结下(本文基于jdk1.8):unsafe可以帮我们
- 前言当我们在手机上使用360安全卫士时,手机屏幕上时刻都会出现一个小浮动窗口,点击该浮动窗口可跳转到安全卫士的操作界面,而且该浮动窗口不受其
- 在C#2.0中,微软给我们带来了一些新的特性,例如泛型,匿名委托等。然而,这些新的特性多多少少会给人一种从别的语言中“抄”来的感觉(例如泛型
- 废话不多说了,直接给大家贴代码了。具体代码如下所示:using System;using System.Collections.Generi
- 效果和代码都非常直观:实例1:TimePicker<RelativeLayout xmlns:android="http:/
- 本文实例为大家分享了Android自定义Banner轮播效果展示的具体代码,供大家参考,具体内容如下自定义View布局<Relativ