Spring Boot 核心理解-profile

在 Spring Boot 中,application.propertiesapplication.yml 是用来管理应用程序配置的主要文件。为了方便在不同的环境(如 devtestprod)下进行配置管理,Spring Boot 提供了 Profile 的概念,这使得我们可以针对不同的环境配置不同的属性。通过使用 Profile,可以为开发、测试、生产等不同的环境设置不同的配置,并根据环境的需要自动加载对应的配置。

如何理解多环境配置管理

 多环境配置管理的核心是将开发、测试、生产环境下的配置分离,确保在不同的环境下应用程序能使用适当的配置。例如,开发环境可能使用本地数据库,而生产环境则使用线上数据库。通过使用 Profiles,你可以在不同环境中自动切换到相应的配置文件,而无需手动修改配置。

多环境配置的示例

1. 默认配置: 

application.propertiesapplication.yml

application.propertiesapplication.yml 是默认加载的配置文件,适用于没有指定 Profile 的情况。

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
spring.datasource.username=dev_user
spring.datasource.password=dev_password

这个文件通常用来存储开发环境的默认配置,或者是通用的配置。

2. 多环境配置:

application-{profile}.propertiesapplication-{profile}.yml

我们可以根据环境创建不同的配置文件,比如:

  • application-dev.propertiesapplication-dev.yml(开发环境)
  • application-test.propertiesapplication-test.yml(测试环境)
  • application-prod.propertiesapplication-prod.yml(生产环境)

这些配置文件的名称格式是 application-{profile}.properties,其中 {profile} 是你定义的环境名称(如 devtestprod)。

 application-dev.properties

spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
spring.datasource.username=dev_user
spring.datasource.password=dev_password

application-prod.properties

spring.datasource.url=jdbc:mysql://prod-db-server:3306/prod_db
spring.datasource.username=prod_user
spring.datasource.password=prod_password

3.选择Profile的方法

Spring Boot 会根据设置的 Profile 来加载对应的配置文件。可以通过以下几种方式来选择当前的 Profile:

方式1:在 application.properties 中设置默认 Profile

application.properties 中添加以下内容,可以指定一个默认的 Profile。

spring.profiles.active=dev

这会使 Spring Boot 启动时使用 application-dev.properties 中的配置。

方式2:通过启动命令,参数指定Profile

你也可以在启动SpringBoot应用时,通过命令行参数来指定Profile:

java -jar myapp.jar --spring.profiles.active=dev

这会在运行时使用 application-prod.properties 中的配置。

方式3:通过环境变量指定Profile

你还可以通过操作系统的环境变量来设置Profile

export SPRING_PROFILES_ACTIVE=prod

然后启动应用,Spring Boot 会自动读取这个环境变量,使用相应的配置文件。

4.application.yml 中的多 Profile 配置

 如果你更喜欢使用 application.yml,也可以在同一个 application.yml 文件中使用多 Profile 的配置:

spring:datasource:username: common_userpassword: common_password---
spring:profiles: devdatasource:url: jdbc:mysql://localhost:3306/dev_db---
spring:profiles: proddatasource:url: jdbc:mysql://prod-db-server:3306/prod_dbusername: prod_userpassword: prod_password

在这个示例中:

  • 默认情况下会使用 common_usercommon_password
  • 如果 spring.profiles.active 设置为 dev,则会使用 jdbc:mysql://localhost:3306/dev_db
  • 如果 spring.profiles.active 设置为 prod,则会使用 jdbc:mysql://prod-db-server:3306/prod_db 以及 prod_userprod_password

总结

通过使用 application-{profile}.propertiesapplication-{profile}.yml 文件,可以在开发、测试和生产等不同环境中自动加载合适的配置。管理多环境配置时,需要熟悉以下几点:

  1. Profile 文件的命名规则application-{profile}.propertiesapplication-{profile}.yml
  2. 如何设置当前的 Active Profile:可以通过 spring.profiles.active 属性、命令行参数或环境变量来设置。
  3. 了解每个环境需要的特定配置,比如数据库连接、缓存配置、日志级别等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用DeepKE训练命名实体识别模型DEMO(官方DEMO)

使用DeepKE训练命名实体识别模型DEMO(官方DEMO) 说明: 首次发表日期:2024-10-10DeepKE资源: 文档: https://www.zjukg.org/DeepKE/网站: http://deepke.zjukg.cn/cnschema: http:/…

云开发 | 微信小程序云开发无法获取数据库数据

1.我在我的云数据库中创建了一个数据表(即collection数据集)userList,并且存入了两条用户信息数据 2. 想要通过按钮触发事件拿取数据库中数据并且打印在控制台时,获取数据失败,控制台无输出 3. 初始化 | 在开始使用数据库 API 进…

“医者仁术”再进化,AI让乳腺癌筛查迎难而上

世卫组织最新数据显示,我国肿瘤疾病仍然呈上升趋势,肿瘤防控形势依然比较严峻。尤其是像乳腺癌等发病率较高的疾病,早诊断和早治疗意义重大,能够有效降低病死率。 另一方面,中国地域广阔且发展不平衡,各地…

Qt-界面优化盒子模型(71)

目录 描述 相关属性 使用 描述 盒子模型 例如下面房子模型 • Content 矩形区域: 存放控件内容.⽐如包含的⽂本/图标等. • Border 矩形区域: 控件的边框. • Padding 矩形区域: 内边距. 边框和内容之间的距离. • Margin 矩形区域: 外边距. 边框到控件 geometry 返回的矩形…

Qt5.14.2 安装详细教程(图文版)

Qt 是一个跨平台的 C 应用程序开发框架,主要用于开发图形用户界面(GUI)程序,但也支持非 GUI 程序的开发。Qt 提供了丰富的功能库和工具,使开发者能够在不同平台上编写、编译和运行应用程序,而无需修改代码。…

sql server中字符串类型的日期如何比较大小

SQL Server 计算两个时间相差 案例:计算 标准结束时间 和 实际结束时间 之间的秒数差,并根据这个差值判断是否超时。 假设 test 表中有以下数据: 标准结束时间实际结束时间2024-10-12 10:00:002024-10-12 10:30:002024-10-12 11:00:00202…

【分布式微服务云原生】掌握Java分布式事务:2PC、3PC、TCC与Seata全解析

目录 掌握Java分布式事务:2PC、3PC、TCC与Seata全解析一、分布式事务的由来二、两阶段提交2PC1. **准备阶段(投票阶段)**2. **提交阶段**3.**优缺点**优点:缺点: 三、三阶段提交3PC1. 准备阶段(Prepare Phase)2. 预提交…

Flutter路由管理(二)

路由(Route)在移动开发中通常是指页面(Page),这与Web开发的意义是相同的,Route在Andriod中通常指一个Activaty,在IOS中指一个ViewController,路由入栈(push)用…

原生小程序开发组件|地图组件汇总

map 基础库 2.0.12 开始支持, 低版本需做兼容处理。 依赖 MapKit 插件, 插件版本 > 2.2.2。 Tuya MiniApp Tools 上是通过 WebView 模拟的与真机存在差异,请以真机效果为主。 地图。相关 API:ty.createMapContext。这是基于异层渲染的原生组件, 请注意…

el-date-picker 自定义指令,输入数字自动转换显示yyyy-mm-dd格式

el-date-picker 自定义指令,输入数字显示yyyy-mm-dd格式 在main.js引入自定义指令direct.jsdirect.js公共部分时间日期控件,表格内编辑时间控件可用 - (年-月-日)时间范围控件 - (年-月-日)日期转换主要正则年-月-日/年-月-日 时:分/年-月-日 时:分:秒年…

Element-plus el-form、el-dialog 数据回显同时用时,重置失效问题

问题 当第一次打开网页并点击“编辑”按钮时,虽然对话框变量变为 true 使对话框可见,但同步代码会将 formData 对象的属性设置为默认值。由于 Vue 的异步更新机制,DOM 实际上还未更新,因此表单组件内绑定了这些有值的初始数据。这…

【病毒分析】DevicData家族扩散:全球企业和机构成为勒索病毒头号攻击目标!

1.背景 本文聚焦于勒索病毒家族 DevicData 的最新变种,命名为 .DevicData-P a2a9e9c勒索病毒。自2023年1月首次被发现以来,DevicData 家族一直对多个高价值目标展开攻击,包括企业用户、医疗机构和教育机构。这些目标通常持有大量敏感数据&a…

初始爬虫13(js逆向)

为了解决网页端的动态加载,加密设置等,所以需要js逆向操作。 JavaScript逆向可以分为三大部分:寻找入口,调试分析和模拟执行。 1.chrome在爬虫中的作用 1.1preserve log的使用 默认情况下,页面发生跳转之后&#xf…

已发布金融行业标准目录(截止2024年3月)

已发布金融行业标准目录2024年3月序号行业标准编号标准名称

MySQL学习(五):数据类型与约束

MySQL学习(五):数据类型与约束 文章目录 MySQL学习(五):数据类型与约束1. 数据类型与属性1.1 所有的数据类型1.2 所有属性 2. 数据类型详解2.1 整型2.2 浮点类型2.3 定点数类型2.4 位类型2.5 日期与时间2.6…

Linux环境基础开发工具的使用

vim编辑器的基本操作: 在linux环境下输入vim 文件名就可以进入编辑模式. 上述四种模式必须退到命令模式才能进行下一个模式. 在编辑器中写完之后,输入ESC进入命令模式,然后再输入shift:进入低行模式并输入wq保存并退出. 在命令模式下的操作: 光标所在行:1.输入yy进行复制, 输…

golang语法

参考链接&#xff1a;https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…

ubuntu24 root用户修改密码 ubuntu新系统没有创建root用户

ubuntu 系统在虚拟机新建一个ubuntu24&#xff0c;但是在配置系统时候&#xff0c;并没有配置root密码&#xff0c;只是新增了一个自定义账号于密码&#xff0c;在创建好后&#xff0c;可以登录系统&#xff0c;设置root密码~ 1. ubuntu系统初始化后&#xff0c;登录自建账号 …

k8s介绍-搭建k8s

Kubernetes介绍&#xff0c;官网&#xff1a;Kubernetes 应用部署方式演变 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其他技术的参与 缺点&#xff1a;不能为应用程序定义资源使用边界&#xff0c…

【C++网络编程】(一)Linux平台下TCP客户/服务端程序

文章目录 Linux平台下TCP客户/服务端程序服务端客户端相关头文件介绍 Linux平台下TCP客户/服务端程序 图片来源&#xff1a;https://subingwen.cn/linux/socket/ 下面实现一个Linux平台下TCP客户/服务端程序&#xff1a;客户端向服务器发送&#xff1a;“你好&#xff0c;服务…