SpringBoot环境隔离Profiles

前言

通常我们开发不可能只有一个生产环境,还会有其它的开发,测试,预发布环境等等。为了更好的管理每个环境的配置项,springboot也提供了对应的环境隔离的方法。

直接上干货

知识点

激活环境方法

1,在application.properties或者yaml文件中配置:spring.profiles.active=环境1,环境2
2,命令行激活:java -jar xxx.jar --spring.profiles.active=环境1,环境2

补充

1,修改默认环境名称 spring.profiles.default=test;

2,不管激活哪个环境,这些环境都要有 spring.profiles.include= security  总是要生效的环境

3,对多环境进行分组:spring.profiles.group.name(你自己起名)=环境1,环境2  
    也可以这么写spring.profiles.group.name[0]=环境1
    spring.profiles.group.name[1]=环境2
使用则相同:spring.profiles.active=name(group起的名)

补充相关注解:@Profile()

@Profile("dev") => 注解表示这个类只能在这些环境下生效, 如果值为"default"则表示:默认环境

注意

命名规范:application-(profiles标识).properties

代码测试

照例准备启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Applications {

    public static void main(String[] args) {
        SpringApplication.run(Applications.class, args);
    }
}

准备配置文件application.properties

spring.profiles.active=dev

pro.b.value=b value in application

准备dev环境配置文件application-dev.properties

pro.a.value=this is dev
pro.b.value=b value in dev

testController类

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class ProfilesTestController {

    @Value("${pro.a.value}")
    private String a;

    @Value("${pro.b.value}")
    private String b;


    @RequestMapping(method = RequestMethod.GET, path = "/profiles/test")
    public void test1() {
        log.info("测试激活环境是否生效" + a);
        log.info("测试与application.properties中配置项冲突时,生效为哪个:" + b);
    }

}

启动测试,测试结果如图所示

这里需要注意,尽可能不要去在不同的properties写相同的配置,如果你的代码中加了一些别的东西,例如常用的配置解密功能等操作property的功能时,会出现与预想结果之外的输出。如下图,我加入自定义解密之后的输出。

希望对各位看官老爷有帮助,如果可以的话,能否请各位老爷点个赞,关注一下博主呢,在这里非常感谢各位老爷了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/631833.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树莓派3B+入门(无外设)

昨日刚到一块树莓派3B,甚是喜爱,然半宿未眠 1、下载 在官网先下载烧录文件https://www.raspberrypi.com/software/ 下载完毕打开,选择,根据自己板子型号定 操作系统用最新的就行,64位不太稳定 储存卡,需…

代码随想录算法训练营第二十九天|39. 组合总和、40.组合总和II、131.分割回文串

39. 组合总和 文档讲解代码随想录 题目链接:. - 力扣(LeetCode) 这道题目的关键点: candidates :无重复元素的数组、candidates 中的数字可以无限制重复被选取。 与之前做过的组合问题的区别: 组合问题…

Leetcode2391. 收集垃圾的最少总时间

Every day a Leetcode 题目来源:2391. 收集垃圾的最少总时间 解法1:前缀和 收集垃圾的时间分为两部分: 垃圾车收拾垃圾的时间:垃圾车收拾一单位的任何一种垃圾都需要花费 1 分钟。三辆垃圾车行驶的时间:每辆垃圾车…

windows部署腾讯tmagic-editor03-DSL 解析渲染

创建项目 将上一教程中的editor-runtime和hello-editor复制过来 概念 实现 创建hello-ui目录 渲染节点 在hello-ui下创建 Component.vue 文件 由于节点的type是由业务自行定义的,所以需要使用动态组件渲染,在vue下可以使用component组件来实现 c…

软考笔记随记

原码:(0正1负) 原码是最直观的编码方式,符号位用0表示正数,用1表示负数,其余位表示数值的大小。 例如,+7的原码为00000111,-7的原码为10000111。 原码虽然直观,但直接用于加减运算会导致计算复杂,且0有两种表示(+0和-0),不唯一。 反码: 反码是在原码的基础上得…

绘唐2跟绘唐3有什么区别

绘唐2跟绘唐3有什么区别 这款产品的最大亮点在于其高度精准的语音克隆能力,利用先进的模型,能够捕捉到用户独特的音调、音高和调制方式,使用户能够以前所未有的方式复制和利用自己的声音。仅需10秒钟的录制时间,即可实现声音的克…

【C语言】自定义类型之---结构体超详解(结构体的定义使用、指针结构体,内存对齐,......代码详解)

目录 前言: 一:结构体 1.1:什么是结构体? 1.2:结构体类型的声明 1.3:结构体变量的定义 1.4:结构体的内存对齐 1.5:结构体传参 二:位段 2.1:位段是什…

docker镜像容器常用命令

常用基础命令1、docker info #查看docker版本等信息 2、docker search jenkins #搜索jenkins镜像 3、docker history nginx #查看镜像中各层内容及大小,每层对应的dockerfile中的一条指令。 4、docker network ls #显示当前主机上的所有网络 5、docker logs nginx …

2024MySQL8安装与绿色版Navicat连接【提供安装包】数据库

视频教程面向人群和使用方法: 1:大学生【解决老师作业或自己兴趣学习需要】; 2:第一次需要安装MySQL的开发者【需要简单使用,因为项目会用到】 3:老手二倍速,新手老老实实按照教程一倍速模仿视频操作&am…

【虚拟机】深入理解java虚拟机【内存溢出实例】

目录 一、问题解析 二、粉丝福利 一、问题解析 通过简单的小例子程序,演示java虚拟机各部分内存溢出情况: (1).java堆溢出: Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达&am…

[数据集][目标检测]卡车抓斗卸车检测数据集VOC+YOLO格式213张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):213 标注数量(xml文件个数):213 标注数量(txt文件个数):213 标注类别…

ROS从入门到精通4-3:制作Docker镜像文件Dockerfile

目录 0 专栏介绍1 为什么需要Dockerfile?2 Dockerfile书写原则3 Dockerfile常用指令3.1 FROM3.2 MAINTAINER3.3 RUN3.4 ADD3.5 COPY3.6 CMD3.7 ENV3.8 EXPOSE3.9 WORKDIR3.10 ARG 4 Dockerfile构建ROS工程实例 0 专栏介绍 本专栏旨在通过对ROS的系统学习&#xff0…

数据结构与算法学习笔记一---顺序表的静态存储表示和实现(C++)

目录 前言 1.什么是顺序表 2.顺序表的静态存储表示 1.初始化 2.长度 3.数据元素 4.长度 5.获取元素下标 6.前驱节点 7.后继节点 8.插入 9.删除 10.遍历 11.测试代码 前言 这篇文章讲的是顺序表的两种实现方式。 1.什么是顺序表 线性表的顺序表示指的是用一组地址…

(论文笔记)TABDDPM:使用扩散模型对表格数据进行建模

了解diffusion model:什么是diffusion model? 它为什么好用? - 知乎 摘要 去噪扩散概率模型目前正成为许多重要数据模式生成建模的主要范式。扩散模型在计算机视觉社区中最为流行,最近也在其他领域引起了一些关注,包括语音、NLP…

LangChain搭建Agent | 使用initialize_agent

1.create_tool_calling_agent 构建agent,这个方法是过时了吗?官方文档也没更新,官方示例也运行错误 from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import ConfigurableField from langchain_core…

医院污水一体化处理设备有哪些

医院污水一体化处理设备通常包括以下几个主要组件: 预处理单元:用于去除污水中的固体悬浮物、颗粒物、油脂等,常见的预处理单元包括格栅、沉砂池、油水分离器等。生物处理单元:用于降解有机物质和去除氮、磷等营养物质。常见的生物…

基坑监测识别摄像机

基坑是建筑施工中的一个重要环节,它对整个建筑工程的安全和稳定性起着至关重要的作用。为了监测基坑的状态和确保施工的安全进行,基坑监测识别摄像机被广泛应用于建筑工程中。这种摄像机可以实时监测基坑施工的情况,识别可能存在的问题并提供…

如何在Spring启动的时候执行一些操作

如何在Spring启动的时候执行一些操作 在Spring启动的时候执行一些操作有多种方式。你可以通过实现ApplicationRunner或者CommandLineRunner接口,在Spring Boot应用程序启动后执行特定操作。另外,你也可以使用PostConstruct注解,在Spring Bea…

圆片/圆盘测厚设备 HW01-SG系列单点测厚仪

关键字:圆片测厚仪圆盘测厚仪, 圆形测厚仪, 单点测厚仪, 汽车工件测厚仪, 产品简介: 测厚仪采用上下两个对射的激光位移传感器测量圆盘状物体边缘的厚度。圆盘放置在由步进电机驱动的托盘上,点按测量按钮托盘旋转一周,可测量被测物整个圆周上…

立即注册 | 线上讲座:基于 NGINX 为现代应用构筑三大安全防线

原文作者:NGINX 原文链接:立即注册 | 线上讲座:基于 NGINX 为现代应用构筑三大安全防线 转载来源:NGINX 开源社区 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn 基本信息 课程主题:基于 NGINX 为现代应用构…