SpringBoot属性配置实战(多环境)

多环境配置-SpringBoot 2.7.2 实战基础 在一个项目的开发过程中,通常伴随着多套环境:本地环境 local、开发环境 dev、集成测试环境 test、用户接受测试环境 uat、预生产环境 pre、生产环境 prod。本节的内容有些脱离真实企业开发,因为在真实的企业开发中,不会只开发一个独立的服务,而是多个微服务。发展至今,云原生也越来越普遍。面对多套环境,通常是”一套代码 + 配置中心“的方式,将代码编译打包后,在启动服务时或服务运行过程中,从配置中心读取配置,保证各个环境代码完全一致,仅配置不同。关于配置中心,在后面的系列文章中会详细介绍。... 阅读详情

在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口、日志级别等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的工作。

对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,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-dev.properties、application-test.properties、application-prod.properties
•在这三个文件均都设置不同的server.port属性,如:dev环境设置为1111,test环境设置为2222,prod环境设置为3333
•application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置

测试不同配置的加载

•执行java -jar xxx.jar,可以观察到服务端口被设置为1111,也就是默认的开发环境(dev)
•执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为2222,也就是测试环境的配置(test)
•执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为3333,也就是生产环境的配置(prod)

多环境的配置思路总结

•application.properties中配置通用内容,并设置spring.profiles.active=dev,以开发环境为默认配置
•application-{profile}.properties中配置各个环境不同的内容
•通过命令行方式去激活不同环境的配置
SpringBoot项目Cookie跨站问题:SameSite属性详解与实战解决方案 Cookie作为Web开发中管理会话状态的核心机制,其安全策略直接影响用户登录态和跨域功能。随着浏览器安全策略演进,SameSite属性成为控制Cookie在跨站请求中是否发送的关键。该属性通过Strict、Lax、None三种模式,在防范CSRF攻击与保障功能可用性之间取得平衡。对于需要实现单点登录、第三方登录或跨域iframe嵌入的SpringBoot应用,必须正确配置SameSite=None并配合Secure属性,才能确保Cookie在跨站点场景下正常传输。本文聚焦SpringBoot项目中的Coo 阅读详情

相关推荐

IDEA怎么配置SpringBoot多环境开发/SpringBoot怎么打包发布

IDEA怎么配置SpringBoot多环境开发/SpringBoot怎么打包发布

花花的小脑瓜的博客 1981

【SpringBoot】SpringBoot Starter 作用及原理

有没有在入行后直接基于 SpringBoot 开发项目,没有 spring、servlet 开发经历的?有没有用 SpringBoot 开发项目,但是第一次听说 Starter 或者听过却不知道是干嘛的?有没有知道 Starter 是干嘛的,但不知其原理的?有没有想了解 Starter 原理或想自己实现一个 Starter 提供别人使用的?如果有以上情况的,希望通过本文可以帮助你了解 Starter。

DreamSun的博客 7562

【论文翻译】VIT:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

VIT摘要介绍相关工作模型VISION TRANSFORMER (VIT)微调和高分辨率实验结论 摘要 虽然Transformer架构在自然语言处理任务中已经成为事实标准,但是它在计算机视觉领域的应用仍然受限。在视觉领域,注意力要么和卷积网络结合使用,要么替换卷积网络中的某些部分,同时保持整体结构不变。本文表明对CNNs的依赖不是必要的,纯转换器(pure transformer)直接应用于图像块(image patches)序列在图像分类任务中能发挥很好的作用。当对大量数据进行预训练并把它转移到多个中型或

栗子菜菜 1846

【Spring Boot】Spring Boot 中的 Starter

Spring Boot 为了简化配置,提供了非常多的 Starter。它先打包好与常用模块相关的所有 JAR 包,并完成自动配置,然后组装成 Starter(如把 Web 相关的 Spring MVC、容器等打包好后组装成 spring-boot-starter-web)。这使得在开发业务代码时不需要过多关注框架的配置,只需关注业务逻辑即可。

Data · Model · Agent · Repeat 6198

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

本文简单介绍了MQTT的基础知识和使用方法,以蓝牙WIFI双模芯片W801作为硬件设备,接入到华为云。

weixin_50622833的博客 1万+

PCI-Express、MiniPCIe、ExpressCard接口转换说明/引脚互换关系

通过引脚PIN互换可以在PCI-Express、MiniPCIe、ExpressCard之间切换不同的接口;提供接口引脚表和标准尺寸图。

tech34的博客 7121

深入理解Spring Boot Starter:概念、特点、场景、原理及自定义starter

虽然Spring Boot提供了许多开箱即用的Starter,但在某些情况下,你可能希望创建自己的Starter来封装你的库、服务或特定的配置逻辑。简化依赖管理:将一组相关的依赖项打包到一个Starter中,使其他项目能够轻松地通过单个依赖项引入它们。提供默认配置:为你的库或服务提供合理的默认配置,减少其他项目中的配置工作量。促进最佳实践:通过Starter推广和强制实施特定的开发模式或最佳实践。设置Maven或Gradle项目。

yuhui666666的博客 688

inferCNVpy分析流程学习

inferCNV的用途大家都已经很清楚了,接下来就走一下流程,试一试Python版的inferCNV。使用的数据集为:GSE188711,既往推文可见:Scanpy分析全流程(含harmonypy整合/细胞周期矫正/双细胞检测及去除)(

zfyyzhys的博客 1293

实战!3分钟搞定Spring Boot 多环境配置

在实际项目开发的过程中,需要面对不同的运行环境,比如开发环境、测试环境、生产环境等,每个运行环境的数据库、Redis服务器等配置都不相同,每次发布测试、更新生产都需要手动修改相关系统配置。这里配置的是dev开发环境。在上面的示例中,application.properties包含项目所需的所有公共配置,这里配置系统的启动端口,所有环境的启动端口都是8088。通常情况下,开发环境、测试环境和生产环境使用的数据库是不一样的,所以接下来以不同环境配置不同数据库为例来演示多环境的配置。接下来演示切换项目运行环境。.

u012102536的博客 5363

保姆级避坑指南:在openEuler 22.03 LTS上用kubeadm 1.32.2部署K8s集群(含阿里云镜像加速)

本文提供在openEuler 22.03 LTS上使用kubeadm 1.32.2部署Kubernetes集群的详细指南,涵盖系统准备、容器运行时适配、kubeadm配置及集群初始化等关键步骤。特别针对openEuler系统的特殊性,解决软件源配置、cri-dockerd编译安装、阿里云镜像加速等常见问题,帮助用户高效完成K8s集群部署。

weixin_28312391的博客 272

Windows 11下JDK 21与JMeter 5.6.3环境配置全攻略

环境变量是操作系统管理软件路径与执行权限的核心机制,它通过预设的键值对,指引系统在调用命令时定位可执行文件。理解其工作原理,是解决软件安装后“命令未找到”等问题的关键。对于Java生态而言,正确配置JAVA_HOME和Path变量,不仅能让java、javac等基础命令全局可用,更是Maven、Gradle乃至JMeter等众多工具链顺畅运行的基石。JMeter作为一款基于Java开发的经典性能测试与接口测试工具,其稳定运行高度依赖健全的Java环境。本文聚焦于在Windows 11系统上,为JDK 21与

weixin_30940783的博客 449

SpringBoot多环境配置与动态属性注入实战

在实际的软件开发过程中,我们通常会面临多个不同的运行环境,如开发环境(Dev)、测试环境(Test)、生产环境(Prod)等。不同的环境可能需要不同的配置,例如数据库连接信息、日志级别、缓存配置等。Spring Boot 提供了强大的多环境配置和动态属性注入功能,能够帮助我们轻松应对这些问题。本文将详细介绍 Spring Boot 多环境配置与动态属性注入的实战方法。

梵心白莲的博客 729

别再手动调波形了!用STM32G474的HRTIM+DAC生成精密锯齿波,附完整CubeMX配置

本文详细介绍了如何利用STM32G474的高分辨率定时器(HRTIM)和数模转换器(DAC)协同工作,实现高精度锯齿波生成。通过CubeMX配置指南、关键寄存器计算和实践技巧,帮助开发者快速掌握全硬件实现的波形生成方案,显著提升嵌入式系统的波形控制精度和响应速度。

weixin_28716769的博客 246

SpringBoot配置全解析:从原理到实战,掌握多环境与属性绑定

在Java应用开发中,配置管理是连接代码与运行环境的核心桥梁,它决定了应用在不同场景下的行为与性能。其基本原理在于将可变参数从硬编码中解耦,通过外部化配置实现部署的灵活性。SpringBoot作为主流的Java开发框架,通过其强大的配置体系将这一理念发挥到极致,提供了类型安全的属性绑定、层次化的加载优先级以及优雅的多环境支持,极大提升了工程实践中的可维护性与团队协作效率。本文聚焦于SpringBoot配置机制,深入剖析@ConfigurationProperties与@Value的使用场景,并结合Profi

ithome 326

Microsemi Libero系列教程(全网首发)

关于Libero IDE和Libero SoC Libero分为Libero IDE和Libero SoC,Libero IDE最新版本是v9.2 SP3(2016年4月4日)已经不再更新维护了,而Libero SoC是Libero IDE的升级版,官方推荐的开发工具,文中的Libero指的是Libero SoC。 Libero SoC Libero® SoC是Microsemi(美高森美)官方...

whik1194的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Springboot实战应用

Springboot实战应用

浩浩的博客 96

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring Boot配置文件详解:YAML vs Properties——多环境配置与敏感数据加密实战

配置文件是Spring Boot项目的"中枢神经系统",90%的定制化需求通过配置实现。本文将深度解析YAML与Properties格式的差异,手把手实现多环境切换,并演示敏感数据加密方案,让你的配置管理既灵活又安全。

u012762619的博客 1063

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

从头撸springboot(二)

从头撸springboot(二) 刚开始工作,感觉springboot基础不牢靠,决定从头撸一遍springboot 全教程:https://www.zhihu.com/question/53729800 今日工作:https://blog.didispace.com/spring-boot-learning-1/ 1)修改application.properties com.example.blog.name=123 com.example.blog.title=Spring Boot456 注:

kiki950710的博客 174

SpringBoot SpringBoot 运维实用篇 3 多环境开发 3.4 多环境分组管理

SpringBoot SpringBoot 运维实用篇 3 多环境开发 3.4 多环境分组管理

代码改变世界 534

SpringBoot实现多环境开发

​ 概述:多环境开发就是针对不同的环境设置不同的配置属性。​ 那如何想设计两组环境呢?中间使用三个减号分隔开​ 那么如何区分两种环境呢?起名字呗​ 那怎么选择用哪个环境呢?设置默认启动哪个就可以喽​ 实际上它就这么简单,再多来一组环境也OK呦~​ 其中关于环境名称定义上述格式是过时格式,标准格式如下。

踏风彡的博客 2333

SpringBoot多环境配置实战指南

摘要:本文介绍了SpringBoot多环境开发配置的实现方案,通过Profile机制实现开发、测试和生产环境的配置隔离与灵活切换。核心内容包括:1)使用不同配置文件管理各环境专属配置;2)命令行启动指定环境的参数设置;3)Maven与SpringBoot多环境的兼容解决方案;4)SpringBoot配置文件的优先级机制。文章还分析了底层实现原理,包括配置加载流程和属性覆盖机制,并提供了实际配置示例和注意事项,帮助开发者实现高效的多环境开发部署。

任岁月风干理想再也找不回真的我 2074

SpringBoot项目部署、属性配置方式及多环境开发

遇到的问题: 打包过程中遇到test测试错误 java在IDEA编辑的无异常,但是运行时报错: Error: A JNI error has occurred, please check your installation and try again Exception in thread “main” 这个错误信息表明你正在尝试运行的Java程序是使用一个较新版本的Java(Java 17,由class file version 61.0表示)编译的,而你当前的Java运行环境只支持到Java 8(由c

m0_73739654的博客 1948

【SpringBoot】一文吃透SpringBoot多环境开发

在我们的开发中,必然不会只用到单个环境开发。整个软件的开发分为:开发——>测试——>生产(即给用户使用)。在这整个过程中用到的配置必然不一样,例如我们接了银行一个活,要对底层数据库进行调试;银行管理层肯定不会告诉你密码的。这种情况下就要求分环境,开发人员自己有一套环境dev,测试人员给人家老板去提供安装、上线测试必然又是另一套(不然你运维直接开发人员全包了得了?),到上线了,老板肯定又是自己的一套环境。密码这种私密性极高的东西必然不会告诉我这种底层程序员。

未来可以改变 3762

SpringBoot——多环境开发的使用

黑马学习笔记——多环境开发,其实就是说我们的电脑上写的程序最终要放到别人的服务器上去运行。那么该如何使用springboot来进行多环境的开发呢?

知识记录 4155

SpringBoot高级配置:临时属性、配置文件、日志、多环境配置

一、临时属性设置 1、带属性启动SpringBoot 2、在idea中修改临时配置 3、还可以通过编程修改参数 二、配置文件分类 1、SpringBoot中4级配置文件 2、自定义配置文件 3、自定义配置文件——重要说明 三:多环境开发 1、多环境开发yaml版(一个配置文件) 2、多环境开发yaml版(多个个配置文件) 3、多环境开发properties版(多个个配置文件) 4、多环境开发独立配置文件书写技巧 四:多环境开发控制 五、日志 1、日志基础 2、日志输出格

qi341500的博客 3095

7.【SpringBoot3】项目部署、属性配置、多环境开发

项目完成后,需要部署到服务器上。SpringBoot 项目需要经过编译打包生成一个 jar 包(借助打包插件 spring-boot-maven-plugin),再将该 jar 包发送或拷贝到服务器上,然后就可以通过执行来运行 jar 包。服务器的系统可能是 windows、mac、linux。

qq_44378854的博客 2655
上一篇: SpringBoot属性配置实战(多种方式)
下一篇: Spring Boot 静态资源处理
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值