【Spring实战】16 Profile

文章目录

    • 1. 定义
    • 2. 使用
      • 2.1 定义 Profile
      • 2.2 激活 Profile
    • 3. 演示
      • 3.1 properties文件
      • 3.2 打印日志
      • 3.3 启动服务&验证
      • 3.4 修改 active
      • 3.5 重启服务&验证
    • 4. 应用场景
      • 4.1 数据库配置
      • 4.2 日志配置
    • 5. 代码详细
    • 总结

Spring 框架提供了一种强大的机制,允许在不同的环境中以不同的方式配置和管理应用程序。这个机制就是 Spring 的 Profile。通过使用 Profile,我们可以根据应用程序运行的环境,动态地选择不同的配置信息,从而实现更灵活和可配置的应用程序。本文将对 Spring 中的 Profile 的概念、用法以及实际应用场景进行介绍。

1. 定义

Spring Profile 是一种在不同环境中提供不同配置的机制。通过定义不同的 Profile,我们可以在不同的部署环境中轻松切换配置,而无需修改应用程序的源代码。每个 Profile 可以包含特定于该环境的 bean 定义、属性文件等。

在这里插入图片描述

2. 使用

2.1 定义 Profile

在 Spring 中,我们可以使用 @Profile 注解来定义 Profile。示例:

@Configuration
@Profile("dev")
public class DevConfig {// 开发环境的一些列配置// 例如:将SQL文格式化并打印
}

2.2 激活 Profile

有几种方式可以激活 Profile:

  • application.propertiesapplication.yml 中设置 spring.profiles.active 属性

    spring.profiles.active=dev
    
  • 在启动应用程序时通过命令行参数激活 Profile

    java -jar koala.jar --spring.profiles.active=dev
    
  • 在启动程序之前通过环境变量的设定来激活 Profile

    export SPRING_PROFILES_ACTIVE=dev
    

3. 演示

3.1 properties文件

application.properties 中通过 Profile 的设定,来动态调整日志的输出级别

application.properties

spring.profiles.active=dev

application-dev.properties

logging.level.root=INFO

application-test.properties

logging.level.root=WARN

3.2 打印日志

IndexController

package com.cheney.koala.controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("index")
public class IndexController {private static final Logger logger = LoggerFactory.getLogger(IndexController.class);@GetMappingpublic String index(Model model) {logger.debug("【Debug】- Hello.");logger.info("【Info】- Hello.");logger.warn("【Warn】- Hello.");logger.error("【Error】- Hello.");model.addAttribute("msg", "Welcome to Koala System.");return "index";}
}

3.3 启动服务&验证

在这里插入图片描述

3.4 修改 active

application.properties

spring.profiles.active=test

3.5 重启服务&验证

在这里插入图片描述

这样,我们就可以使用 Profile 动态的对日志级别进行了配置

4. 应用场景

4.1 数据库配置

在不同的环境中,数据库连接信息可能不同。通过使用 Profile,可以为每个环境定义不同的数据源配置。

@Configuration
@Profile("dev")
public class DevDatabaseConfig {// 开发环境的一些列配置
}@Configuration
@Profile("test")
public class TestDatabaseConfig {// 测试环境的一些列配置// 例如 使用特定的测试数据库
}

4.2 日志配置

不同环境可能需要不同级别的日志记录。通过使用 Profile,我们可以定义不同的日志配置。

@Configuration
@Profile("dev")
public class DevLoggingConfig {// 开发环境的日志配置
}@Configuration
@Profile("test")
public class TestLoggingConfig {// 测试环境的日志配置
}

5. 代码详细

https://github.com/cheney09/spring-practical-combat/tree/main/16/koala

在这里插入图片描述

总结

Spring Profile 为我们提供了一种简单而强大的方式,以不同的方式配置应用程序,从而满足不同环境的需求。通过合理使用 Profile,我们能够提高应用程序的灵活性和可维护性,同时更容易实现自动化部署和测试。在实际应用中,合理定义和使用 Profile 将成为提高开发效率的重要手段。

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

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

相关文章

docker 在线安装mysql 8.0.21版本

1、拉取mysql 8.0.21版本镜像 2、查看镜像 docker images 3、在宿主机 /usr/local/mysql 下的 conf 文件夹下,创建 my.cnf 文件,并编辑内容 [mysql] default-character-setutf8 [client] port3306 default-character-setutf8 [mysqld] port3306 se…

普中STM32-PZ6806L 使用FlyMcu串口烧录程序

简介 我的串口下载电路坏掉了, 所以研究了下如何通过USB转TTL进行程序的下载, 为后续Bootloader部分做准备;连接 我的板几乎是十年前买的, 所以电路与现有网上的资料有些差异, 所以仅供参考 USB 转 TTL线 与开发板 连接, 如图图中 ①, 需要去掉第一个…

YOLOv8训练损失、mAP画图功能 | 支持多结果对比,多结果绘在一个图片(科研必备)

一、本文介绍 本文给大家带来的是YOLOv8系列的绘图功能,我将向大家介绍YOLO系列的绘图功能。我们在进行实验时,经常需要比较多个结果,针对这一问题,我写了点代码来解决这个问题,它可以根据训练结果绘制损失(loss)和mA…

python实现平滑线性滤波器——数字图像处理

原理: 平滑线性滤波器是一种在图像处理中广泛使用的工具,主要用于降低图像噪声或模糊细节。这些滤波器的核心原理基于对图像中每个像素及其邻域像素的线性组合。 邻域平均: 平滑线性滤波器通过对目标像素及其周围邻域像素的强度值取平均来工…

Openwrt修改Dropbear ssh root密码

使用ssh工具连接路由器 输入:passwd root 输入新密码 重复新密码 设置完成 rootImmortalWrt:~# passwd root Changing password for root New password:

dll文件和exe文件的区别和关系

dll文件 DLL(Dynamic Link Library)文件为动态链接库文件,又称"应用程序拓展",是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件&…

【前缀和】【分类讨论】【二分查找】2983:回文串重新排列查询

作者推荐 【动态规划】【字符串】C算法:正则表达式匹配 本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 二分查找算法合集 回文串重新排列查询 给你一个长度为 偶数 n ,下标从 0 开始的字符…

QT上位机开发(绘图软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 稍微复杂一点的软件,一般都是带有绘图功能。绘图的意义,不仅仅是像CAD一样,可以进行模型的设计、比对和调试。它…

爬虫实战-微博评论爬取

简介 最近在做NLP方面的研究,以前一直在做CV方面。最近由于chatgpt,所以对NLP就非常感兴趣。索性就开始研究起来了。 其实我们都知道,无论是CV方向还是NLP方向的模型实现,都是离不开数据的。哪怕是再先进的代码,都是…

数据结构--队列【详解】~(˶‾᷄ꈊ‾᷅˵)~

目录 队列定义: 队列的声明与头文件的包含: 队列的声明: 头文件的包含: 队列的基本操作: 初始化队列 : 摧毁队列: 入队列: 出队列: 返回队头数据: 返回队尾数据&#xff1…

Node.js使用jemalloc内存分配器显著减少内存使用

前言 Node.js 默认使用的是 ptmalloc(glibc) 内存分配器,而: 在服务端领域「不会选择默认的 malloc」是一个常识。( 来源 ) ptmalloc 的分配效率较低( 来源 ),对于 长时间、多核 / 多线程 运行…

算法训练day56|动态规划part16

583. 两个字符串的删除操作 逆向思路:求最长公共子序列,在用总长度-2*公共子序列长度 正向思路:删除多少 1. dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结…

JDBC->SpringJDBC->Mybatis封装JDBC

一、JDBC介绍 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们…

polar CTF WEB-veryphp

1、题目 <?php error_reporting(0); highlight_file(__FILE__); include("config.php"); class qwq {function __wakeup(){die("Access Denied!");}static function oao(){show_source("config.php");} } $str file_get_contents("ph…

【快速全面掌握 WAMPServer】11.安装 PHP 扩展踩过的坑

网管小贾 / sysadm.cc 我们在调试程序代码时&#xff0c;总会遇到一些 PHP 项目需要某些扩展组件。 而在 WAMPServer 下通常的 PHP 扩展的安装也不算有多麻烦。 具体关于 PHP 扩展的区分&#xff08;比如安全线程或非安全线程&#xff09;&#xff0c;以及怎么安装小伙伴们可…

TDD-LTE 寻呼流程

目录 1. 寻呼成功流程 1.1 空闲态寻呼 1.2 连接态寻呼 2. 寻呼失败流程 2.1 Paging消息不可达 2.2 RRC建立失败 2.3 eNodeB未上发Initial UE message或达到超时 1. 寻呼成功流程 1.1 空闲态寻呼 寻呼成功&#xff1a;MME发起寻呼&#xff08;S1 接口发送Paing 消息&…

blender mix节点和它的混合模式

Mix 节点是一种用于混合两个颜色或者两个图像的节点&#xff0c;它有以下几个输入和输出&#xff1a; Color1&#xff1a;用于接收第一个颜色或者图像&#xff0c;也就是基色。Color2&#xff1a;用于接收第二个颜色或者图像&#xff0c;也就是混合色。Fac&#xff1a;用于控制…

Kasada p.js (x-kpsdk-cd、x-kpsdk-ct、integrity)

提供x-kpsdk-cd的API服务 详细请私信~ 可试用~ V:zhzhsgg 一、简述 integrity是通过身份验证Kasada检测机器人流量后获得的一个检测结果&#xff08;数据完整性&#xff09; x-kpsdk-cd 是经过编码计算等等获得。当你得到正确的解决验证码值之后&#xff0c;解码会看到如下图…

Excel报表框架(ExcelReport)极简化解决复杂报表导出问题

Excel Report 耗费了半个月的时间&#xff0c;终于在元旦这三天把报表框架开发完成了&#xff0c;使用该框架你可以非常方便的导出复杂的Excel报表。 项目开源地址&#xff1a; GiteeGithub 前言 不知道各位在使用POI开发报表导出过程中遇到过以下的情况&#xff1a; 频繁…

react + redux 之 美团案例

1.案例展示 2.环境搭建 克隆项目到本地&#xff08;内置了基础静态组件和模版&#xff09; git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务&#xff08;内置了json-server&#xff09; npm run serve 启动前端服务 npm…