当前位置: 首页 > news >正文

10. Profile

1. 区分环境的配置
1.1. properties 配置

假设,一个应用的工作环境有:dev、test、prod
那么,我们可以添加 4 个配置文件:

  • applcation.properties - 公共配置
  • application-dev.properties - 开发环境配置
  • application-test.properties - 测试环境配置
  • application-prod.properties - 生产环境配置

在 applcation.properties 文件中可以通过以下配置来激活 profile:
spring.profiles.active = test
在这里插入图片描述

1.2. yml 配置

与 properties 文件类似,我们也可以添加 4 个配置文件:

  • applcation.yml - 公共配置
  • application-dev.yml - 开发环境配置
  • application-test.yml - 测试环境配置
  • application-prod.yml - 生产环境配置

在 applcation.yml 文件中可以通过以下配置来激活 profile:

spring:profiles:active: prod

此外,yml 文件也可以在一个文件中完成所有 profile 的配置:

# 激活 prod
spring:profiles:active: prod
# 也可以同时激活多个 profile
# spring.profiles.active: prod,proddb,prodlog
---
# dev 配置
spring:profiles: dev# 略去配置---
spring:profiles: test# 略去配置---
spring.profiles: prod
spring.profiles.include:- proddb- prodlog---
spring:profiles: proddb# 略去配置---
spring:profiles: prodlog
# 略去配置

注意:不同 profile 之间通过 — 分割

2. 区分环境的代码

使用 @Profile 注解可以指定类或方法在特定的 Profile 环境生效。

2.1. 修饰类
@Configuration
@Profile("production")
public class JndiDataConfig {@Bean(destroyMethod="")public DataSource dataSource() throws Exception {Context ctx = new InitialContext();return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");}
}
2.2. 修饰注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Profile("production")
public @interface Production {
}
2.3. 修饰方法
@Configuration
public class AppConfig {@Bean("dataSource")@Profile("development")public DataSource standaloneDataSource() {return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).addScript("classpath:com/bank/config/sql/schema.sql").addScript("classpath:com/bank/config/sql/test-data.sql").build();}@Bean("dataSource")@Profile("production")public DataSource jndiDataSource() throws Exception {Context ctx = new InitialContext();return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");}
}
3. 激活 profile
3.1. 插件激活 profile

spring-boot:run -Drun.profiles=prod

3.2. main 方法激活 profile

–spring.profiles.active=prod

3.3. jar 激活 profile

java -jar -Dspring.profiles.active=prod *.jar

3.4. 在 Java 代码中激活 profile

直接指定环境变量来激活 profile:

System.setProperty("spring.profiles.active", "test");

在 Spring 容器中激活 profile:

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.getEnvironment().setActiveProfiles("development");
ctx.register(SomeConfig.class, StandaloneDataConfig.class, JndiDataConfig.class);
ctx.refresh();

相关文章:

10. Profile

1. 区分环境的配置 1.1. properties 配置 假设,一个应用的工作环境有:dev、test、prod 那么,我们可以添加 4 个配置文件: applcation.properties - 公共配置application-dev.properties - 开发环境配置application-test.proper…...

YOLO 自己训练一个模型

一、准备数据集 我的版本是yolov8 8.11 这个目录结构很重要 ultralytics-main | datasets|coco|train|val 二、训练 编写yaml 文件 # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path…...

3.Eureka注册中心

3.Eureka注册中心 假如我们的服务提供者user-service部署了多个实例,如图: 大家思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?有多个user-service实例地址&#xff0…...

基于springboot+vue的墙绘产品展示交易平台系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…...

网络原理-初识(1)

目录 网络发展史 独立模式 网络互连 局域网LAN 广域网WAN 网络通信基础 IP地址 概念 格式 端口 概念 格式 认识协议 概念 作用 五元组 网络发展史 独立模式 独立模式:计算机之间相互独立; 网络互连 随着时代的发展,越来越需要计算机之间相互通信,共享软件和数…...

【GitHub项目推荐--人脸识别】【转载】

01 带有移动应用程序的人脸识别库 OpenFace 作为用于人脸识别的通用库,能够实现瞬态和移动人脸识别,目前在 GitHub 上斩获 14291 Star。以下为 LFW 数据集 Sylvestor Stallone 输入单个图像的流程。 项目地址:https://github.com/cmusatya…...

NLP自然语言处理介绍

自然语言处理(NLP,Natural Language Processing)是一门涉及计算机与人类语言之间交互的学科。它的目标是使计算机能够理解和生成人类语言,从而更好地处理和解析大量的文本数据。NLP不仅是人工智能领域中一个重要的分支&#xff0c…...

在线WebOffce在HTML/VUE/Electron纯前端网页编辑Office之打开Word后自动处于修订模式

在线办公协同办公过程中,对于老板给出的文档修改,如果在错别字方面都要自己一个个字去看的话也太浪费时间了,其实word上就有一个修订模式,可以帮助大家高效完成文档的修改,在线WebOffce在HTML/VUE/Electron纯前端网页编…...

thinkphp+vue+mysql旅游推荐攻略分享网站p0667

基于php语言设计并实现了旅游分享网站。该系统基于B/S即所谓浏览器/服务器模式,应用thinkphp框架,选择MySQL作为后台数据库。系统主要包括用户、景点信息、攻略分类、旅游攻略、门票购买、留言反馈、论坛管理、系统管理等功能模块。运行环境:phpstudy/wa…...

华为系统底层是用Java写的吗?和安卓的区别?

HarmonyOS(鸿蒙操作系统)是华为自主开发的分布式操作系统。下面是对HarmonyOS底层的详细介绍: 微内核架构:HarmonyOS采用了微内核架构,将核心服务和功能放在微内核中,而将其他应用服务放在用户空间中。这种…...

sql server 修改表前 先判断是否有这个列

IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME Users AND COLUMN_NAME userNum) BEGINALTER TABLE UsersADD userNum INT; END 在这个示例中: TABLE_NAME Users 表示我们正在检查Users这张表。COLUMN_NAME userNum 表示我们在查…...

解决网站高并发问题的策略?

解决网站高并发问题的策略 1.应用和数据服务分离:通过将应用和数据服务分离,可以降低数据库的负载压力,提高系统的可扩展性和稳定性。这种策略有助于提高系统的并发处理能力,满足大量用户的需求。 2.使用缓存技术:通过…...

浙政钉实现埋点(浙政钉-H5小程序应用采集开发手册)

浙政钉-H5&小程序应用采集开发手册 埋点代码分为:稳定性监控代码(Emas)和流量分析代码(A+)。稳定性监控代码(Emas)只需要在首页加入。流量分析代码(A+)每个页面都需要加入,但是可以写通用js,在其他页面引入。 适用范围 本文档适用于浙政钉业务web(H5)或小程序应…...

【笔记】Helm-4 最佳实践-3 模板

模板 最佳实践指南的这部分聚焦于模板。 templates/结构 template/目录结构应该如下: 1、如果生成YAML输出。模板文件应该有扩展名.yaml。扩展名是.tpl可用于生成非格式化内容的模板文件。 2、模板文件名称应该使用横杠符号(my-example-configmap.yam…...

网络爬虫基本原理的介绍

网络爬虫,也称为网络蜘蛛,是互联网浏览中的一种自动化程序,主要用于抓取并下载互联网上的网页信息。对于大部分搜索引擎,网络爬虫是其核心组件,用于构建和更新网页的索引。这篇博客将详细介绍网络爬虫的基本原理。 一…...

Qt配置OpenCV

首先安装好Qt Createor,CMake,OpenCV,我本次使用的是Qt6.3.4和OpenCV4.6.0 Qt Creator清华镜像源:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qtcreator/OpenCV官网下载: https://opencv.org/releases/ 一. 编译OpenCV 首先使用Qt C…...

单片机I/O口驱动MOS管

自记录: 看完本章,串起来看,看mos驱动电路这篇:MOS管驱动电流计算以及分立器件驱动电路-CSDN博客 使用单片机做一个PLC,输出可如下两种情况: 单片机I/O口驱动,为什么一般都选用三极管而不是MOS管&#xf…...

k8s---helm

Helm是什么? 在没有helm之前。部署一个服务,需要deployment、service、ingress、挂在卷等等相关配置都需要人工来配置。 helm的作用就是通过打包的方式,把需要人工编写的配置集成在一起。是一键式的部署服务。类似于yum功能。 由官方提供的…...

HarmonyOS(十三)——详解自定义组件的生命周期

前言 自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期,这些回调函数是私有的,在运行时由开发框架在特定的时间进行调用,不能从应用程序中手动调用这些回调函数。 下图展示的是被Entry装饰的组件生命周期: 今…...

设计模式-责任链

之前写代码的时候看到过有审批场景使用了责任链,当时大概看了一下代码实现,今天终于有时间抽出来梳理一下,下面是本文的大纲: 使用场景 审批场景的普遍应用 实际案例:HttpClient中的责任链模式 责任链模式在事件处理、…...

Panda-AGI开源框架:构建具备长期记忆与规划能力的AI智能体

1. 项目概述:当“熊猫”遇上AGI,一个开源智能体的新范式最近在开源社区里,一个名为sinaptik-ai/panda-agi的项目引起了我的注意。光看名字就很有意思,“Panda”和“AGI”(Artificial General Intelligence,…...

Dell R630服务器RAID实战:8块硬盘如何混搭RAID1和RAID0?保姆级图文教程

Dell R630服务器混合RAID配置实战:系统盘与数据盘的黄金分割方案 在企业级IT基础设施中,存储配置的灵活性与可靠性往往决定着整个系统的稳定边界。当一台Dell PowerEdge R630服务器配备8块硬盘时,如何通过RAID技术的组合拳实现系统安全与数据…...

GitHub仓库自动化同步工具xpull:原理、配置与实战应用

1. 项目概述:一个被低估的GitHub数据同步利器 如果你经常在GitHub上管理多个仓库,或者需要将某个仓库的特定分支、标签甚至整个提交历史同步到另一个仓库,那么你很可能经历过手动操作的繁琐。无论是为了备份、镜像、还是将上游的更新合并到自…...

深入PEX8796:从Serdes到Virtual Switch,图解PCIe交换芯片的三种工作模式

深入解析PEX8796:PCIe交换芯片的架构设计与模式创新 在高速数据传输领域,PCIe交换芯片如同交通枢纽般连接着计算系统的各个组件。作为PLX公司(现已被博通收购)的经典之作,PEX8796凭借其灵活的架构设计和多样化的操作模…...

超长上下文时代来临:百万Token窗口实测,我的工作流彻底变了

前言:一个让我彻底改变工作方式的实验 2026年初,我做了一件以前根本不敢想的事:把一份长达800页的技术规范文档,直接塞进了一个大模型的上下文窗口,然后让它帮我找出其中所有与安全性相关的条款,并逐条解释…...

给STM32加个‘U盘’:手把手教你用W25Q64 Flash芯片实现掉电不丢失的数据存储

给STM32加个‘U盘’:手把手教你用W25Q64 Flash芯片实现掉电不丢失的数据存储 在嵌入式系统开发中,数据存储一直是个让人头疼的问题。想象一下,你花了一周时间调试的传感器参数,因为一次意外断电全部丢失;或者精心收集的…...

基于SpringAI开发的通用RAG脚手框架,适配各种场景

RAG 业务落地开发指导 本文面向后续把这套 RAG 能力接入业务系统的开发者,重点回答三件事: 上游业务请求怎么进入 RAG。RAG 内部各组件怎么串起来。数据分别存到 MySQL、文件存储、向量库和搜索引擎的哪里。 1. 总体边界 独立工程保留的是一套完整 R…...

基于RT-Thread与STM32的物联网桌面天气时钟开发实战

1. 项目概述:一个嵌入式工程师的桌面小确幸几年前,我在工位上放了一个从网上淘来的电子时钟,功能很简单,就是显示时间。后来觉得光看时间有点单调,就想,能不能自己动手做一个既能显示时间日期,又…...

Chrome for Testing 终极指南:5个实战技巧让自动化测试更稳定高效

Chrome for Testing 终极指南:5个实战技巧让自动化测试更稳定高效 【免费下载链接】chrome-for-testing 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-for-testing Chrome for Testing 是 Google Chrome Labs 团队专门为浏览器自动化测试设计的 Chr…...

Allegro铺铜避坑指南:从十字花焊盘到孤铜删除,新手必知的10个实用技巧

Allegro铺铜避坑指南:从十字花焊盘到孤铜删除,新手必知的10个实用技巧 第一次在Allegro中铺铜时,那种手足无措的感觉我至今记忆犹新。面对密密麻麻的参数选项和看似简单的操作背后隐藏的各种"坑",即使是完成了布局布线的…...