Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
Redisson 是一个高性能的 Java Redis 客户端,提供了丰富的分布式工具集,如分布式锁、Map、Queue 等,帮助开发者简化 Redis 的操作。在集成 Redisson 到项目时,开发者通常有两种选择:
- 使用 Redisson 原始依赖。
- 使用 Redisson Spring Boot Starter。
这篇文章将详细介绍这两种集成方式的配置、使用场景以及它们的差异,帮助你更好地理解并选择合适的方案。
1. 使用 Redisson 原始依赖
Redisson 原始依赖的方式指的是直接使用 redisson 库,并自行配置 RedissonClient 来与 Redis 进行交互。这种方法适用于任何 Java 项目,包括 Spring、非 Spring 项目。
使用步骤
1.1 引入依赖
在 pom.xml 中添加 Redisson 依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.5</version> <!-- 版本号可根据需求调整 -->
</dependency>
1.2 创建配置类并初始化 RedissonClient
手动定义 Config 对象,并创建 RedissonClient 实例:
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;public class RedisConfig {public RedissonClient createRedissonClient() {// 创建 Redisson 配置对象Config config = new Config();// 设置为单节点配置config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("yourPassword");// 创建 RedissonClient 实例return Redisson.create(config);}
}
1.3 使用 RedissonClient
在业务代码中使用 RedissonClient:
public class RedissonExample {public static void main(String[] args) {RedisConfig redisConfig = new RedisConfig();RedissonClient redissonClient = redisConfig.createRedissonClient();// 使用 Redisson 获取分布式锁var lock = redissonClient.getLock("testLock");lock.lock();try {// 模拟业务逻辑System.out.println("Lock acquired and executing critical section.");} finally {lock.unlock();}}
}
特点
- 手动配置:手动定义
Config对象并配置RedissonClient,可以完全控制连接参数、池大小、超时等。 - 适用于非 Spring 环境:这种方式并不依赖 Spring,可以应用于任何 Java 项目。
- 灵活性强:可以根据具体需求实现自定义逻辑和配置。
使用场景
- 项目对 Spring 依赖不多,或完全不使用 Spring。
- 需要对
RedissonClient的每个细节进行精细控制。
2. 使用 Redisson Spring Boot Starter
redisson-spring-boot-starter 是 Redisson 提供的用于与 Spring Boot 更好集成的模块,它提供了自动化的配置功能,使得 RedissonClient 的配置过程更加简洁。
使用步骤
2.1 引入依赖
在 pom.xml 中添加 redisson-spring-boot-starter 依赖:
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.16.5</version> <!-- 版本号可以根据需求调整 -->
</dependency>
2.2 在 application.yml 或 application.properties 中配置 Redis 信息
在 application.yml 中配置 Redis:
redisson:singleServerConfig:address: "redis://127.0.0.1:6379"password: "yourPassword"connectionPoolSize: 10connectionMinimumIdleSize: 2
2.3 使用 RedissonClient 自动注入
Spring Boot 会自动配置 RedissonClient,因此你可以直接注入并使用它:
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RedissonController {@Autowiredprivate RedissonClient redissonClient;@GetMapping("/lock")public String acquireLock() {var lock = redissonClient.getLock("testLock");lock.lock();try {// 模拟业务逻辑return "Lock acquired and critical section executed.";} finally {lock.unlock();}}
}
特点
- 自动化配置:
redisson-spring-boot-starter能从 Spring Boot 配置文件中读取参数并自动创建RedissonClient。 - 与 Spring Boot 紧密集成:无需手动管理
RedissonClient,更加符合 Spring Boot 的自动化特性。 - 方便注入:可以通过
@Autowired轻松地注入RedissonClient,非常符合 Spring 的开发风格。
使用场景
- 使用 Spring Boot 项目,并且希望最大化利用 Spring Boot 的自动配置特性。
- 希望简化代码、减少配置工作量。
两种方式的对比
| 特性 | 原始 Redisson 依赖 | Redisson Spring Boot Starter |
|---|---|---|
| 配置方式 | 手动创建 Config 和 RedissonClient | 使用 application.yml 自动配置 |
| 适用项目类型 | 任何 Java 项目,包括非 Spring 项目 | 适用于 Spring Boot 项目 |
| 灵活性 | 配置灵活,细节控制全面 | 依赖自动配置,灵活性稍低 |
| 代码复杂度 | 需要手动编写配置类 | 自动配置,代码量少,集成简单 |
| 与 Spring 的集成 | 需手动管理,适用于传统 Java 项目 | Spring Boot 会自动管理 RedissonClient |
| 典型场景 | 对 Spring 依赖不多,或者需要特殊配置场景 | 使用 Spring Boot,追求快速开发和简洁配置 |
如何选择?
- 如果你的项目是传统 Java 项目,或者使用了 Spring Framework 而不是 Spring Boot,并且你希望对 Redis 的配置有更多细节掌控,那么可以选择 原始 Redisson 依赖 的方式。它可以让你根据需求实现自定义的配置和连接管理。
- 如果你的项目是 Spring Boot 项目,并且你希望充分利用 Spring Boot 的自动配置特性来减少配置代码,可以选择 Redisson Spring Boot Starter。这种方式集成简单,代码更加简洁,可以大大提高开发效率。
总结
Redisson 提供了两种集成 Redis 的方式:原始依赖和 Spring Boot Starter。原始依赖适用于需要完全自定义配置的场景,而 Spring Boot Starter 使得集成过程变得更加简单,特别适合 Spring Boot 项目。根据具体项目的需求和开发环境选择合适的方式,能够更好地帮助你完成项目的 Redis 集成,实现更强大的分布式能力。
相关文章:
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
Redisson 是一个高性能的 Java Redis 客户端,提供了丰富的分布式工具集,如分布式锁、Map、Queue 等,帮助开发者简化 Redis 的操作。在集成 Redisson 到项目时,开发者通常有两种选择: 使用 Redisson 原始依赖。使用 Re…...
Git命令使用与原理详解
1.仓库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git clone [url]2.配置 # 显示当前的Git配置 $ git config --list # 编辑Git配置文件 $ git co…...
Linux:自定义Shell
本文旨在通过自己完成一个简单的Shell来帮助理解命令行Shell这个程序。 目录 一、输出“提示” 二、获取输入 三、切割字符串 四、执行指令 1.子进程替换 2.内建指令 一、输出“提示” 这个项目基于虚拟机Ubuntu22.04.5实现。 打开终端界面如图所示。 其中。 之前&#x…...
vue项目中中怎么获取环境变量
在 Vue 项目中,有几种获取环境变量的方法。最常用的是通过 import.meta.env 来访问。 1.首先在项目根目录创建环境变量文件: .env # 所有环境都会加载 .env.development # 开发环境 .env.production # 生产环境2.在环境变量文件…...
C#里怎么样使用正则表达式?
C#里怎么样使用正则表达式? 正则表达式是由普通字符(如英文字母)以及特殊字符(也称为元字符)组成的一种文字模式 这种文字模式可用于检查字符串的值是否满足一定的规则,例如: 验证输入的邮箱是否合法 输入的身份证号码是否合法 输入的用户名是否满足条件等 也可以…...
《生成式 AI》课程 第5講:訓練不了人工智慧?你可以訓練你自己 (下)
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Springhttps://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php 摘要 这一系列的作业是为 2024 年春季的《生成式 AI》课程设计的,共包含十个作业。…...
Vue 动态给 data 添加新属性深度解析:问题、原理与解决方案
在 Vue 中,动态地向 data 中添加新的属性是一个常见的需求,但它也可能引发一些问题,尤其是关于 响应式更新 和 数据绑定 的问题。Vue 的响应式系统通过 getter 和 setter 来追踪和更新数据,但 动态添加新属性 时,Vue 并不会自动为这些新属性创建响应式链接。 1. 直接向 V…...
【Pytest+Yaml+Allure】实现接口自动化测试框架
一、框架思想 requestsyamlpytestallure实现接口自动化框架。结合数据驱动和分层思想,将代码与数据分离,易维护,易上手。使用yaml编写编写测试用例,利用requests库发送请求,使用pytest管理用例,allure生成…...
el-input绑定点击回车事件意外触发页面刷新
小伙伴们在项目中应该还是比较常用键盘指定按键事件的,尤其是一些筛选条件的通过点击键盘回车按键去触发搜索 例如: <el-form><el-form-item label条件title><el-input v-modelformData.searchKey keydown.entersearch></el-input…...
Golang的语言特性与鸭子类型
Golang的语言特性与鸭子类型 前言 什么是鸭子类型? Suppose you see a bird walking around in a farm yard. This bird has no label that says ‘duck’. But the bird certainly looks like a duck. Also, he goes to the pond and you notice that he swims l…...
如何在Linux系统中排查GPU上运行的程序
如何在Linux系统中排查GPU上运行的程序 在Linux系统中,随着深度学习和高性能计算的普及,GPU资源的管理和监控变得越来越重要。当您遇到GPU资源不足或性能下降的问题时,需要能够快速定位并解决这些问题。本文将介绍几种常用的方法来帮助您排查…...
VSCode 新建 Python 包/模块 Pylance 无法解析
问题描述: 利用 VSCode 写代码,在项目里新建一个 Python 包或者模块,然后在其他文件里正常导入这个包或者模块时出现: Import “xxxx” could not be resolved Pylance (reportMissingImports) 也就是说 Pylance 此时无法解析我们…...
Unet++改进44:添加MogaBlock(2024最新改进模块)|在纯基于卷积神经网络的模型中进行判别视觉表示学习,具有良好的复杂性和性能权衡。
本文内容:添加MogaBlock 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 通过将内核尽可能全局化,现代卷积神经网络在计算机视觉任务中显示出巨大的潜力。然而,最近在深度神经网络(dnn)内的多阶博弈论相互作用方面的进展揭示了现代卷积神经网络的表示瓶…...
计算机网络(14)ip地址超详解
先看图: 注意看第三列蓝色标注的点不会改变,A类地址第一个比特只会是0,B类是10,C类是110,D类是1110,E类是1111. IPv4地址根据其用途和网络规模的不同,分为五个主要类别(A、B、C、D、…...
【C语言】野指针问题详解及防范方法
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯什么是野指针?💯未初始化的指针代码示例问题分析解决方法 💯指针越界访问代码示例问题分析解决方法 💯指向已释放内存的…...
【SVN和GIT】版本控制系统详细下载使用教程
文章目录 ** 参考文章一、什么是SVN和GIT二、软件使用介绍1 SVN安装1.1 服务端SVN下载地址1.2 客户端SVN下载地址2 SVN使用2.1 服务端SVN基础使用2.1.1 创建存储库和用户成员2.1.2 为存储库添加访问人员2.2 客户端SVN基础使用2.2.1 在本地下载库中的内容2.2.2 版本文件操作--更…...
【Vue】Vue3.0(二十六)Vue3.0中的作用域插槽
上篇文章 【Vue】Vue3.0(二十五)Vue3.0中的具名插槽 的概念和使用场景 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年11月20日17点30分 文章目录 概念使用场景示…...
神经网络(系统性学习二):单层神经网络(感知机)
此前篇章: 神经网络中常用的激活函数 神经网络(系统性学习一):入门篇 单层神经网络(又叫感知机) 单层网络是最简单的全连接神经网络,它仅有输入层和输出层,没有隐藏层。即&#x…...
CTF之密码学(BF与Ook)
BrainFuck(通常也被称为Brainfuck或BF)和Ook是两种非常特殊且有趣的编程语言。以下是对这两种语言的详细介绍: 一、BrainFuck 简介: BrainFuck是一种极小化的计算机语言,由Urban Mller在1993年创建。由于“fuck”在英…...
【TEST】Apache JMeter + Influxdb + Grafana
介绍 使用Jmeter发起测试,测试结果存入Influxdb,Grafana展示你的测试结果。 环境 windows 10docker desktopJDK17 安装 Apache JMeter 访问官网(Apache JMeter - Apache JMeter™)下载JMeter(目前最新版本5.6.3&a…...
知识图谱与大语言模型协同:构建材料科学精准智能问答系统
1. 项目概述:当知识图谱遇见大语言模型“想象一下,未来有这样一个设备……个人可以存储他所有的书籍、记录和通信,并且它被机械化,可以以极高的速度和灵活性进行查阅。它是他记忆的一个放大的、亲密的补充。”——范内瓦布什&…...
AI翻译准确率99.9%,专业翻译岗位反而增加了——这说明了什么
有一组数据很有意思:AI翻译的准确率已经能到99.9%,速度快,成本低,理论上完全具备替代人工翻译的能力。但实际情况是,专业翻译岗位的需求这几年不降反升。这背后的逻辑,对理解芯片工程师的核心价值也很有启发…...
全球仅17家机构掌握的PlayAI教育大模型微调技术(含3所双一流高校内部调参手册节选)
更多请点击: https://intelliparadigm.com 第一章:PlayAI教育大模型微调技术的全球稀缺性与战略价值 在全球人工智能教育应用加速落地的背景下,PlayAI教育大模型微调技术已成为少数国家与头部机构掌握的核心能力。其稀缺性不仅源于算力、数据…...
别再乱码了!一文搞懂Windows记事本里ANSI、GBK、SJIS这些编码到底怎么选
告别乱码!Windows记事本编码选择终极指南 为什么你的文件总在别人电脑上显示乱码? 每次用Windows记事本保存文件时,面对"ANSI"、"Unicode"、"UTF-8"这些选项,你是否感到困惑?明明在自己…...
找工厂客户,天下工厂和企查查、天眼查这类平台哪个数据更靠谱?
做B2B销售或供应链采购的人,多半都碰过这样的困境:打开某个平台搜一个行业,出来几百条结果,逐条看下去才发现——这家是贸易公司,那家是空壳主体,还有一堆个体工商户,真正能对接生产的工厂没几个…...
软考软件设计师·考前6天·最后冲刺全攻略
📝 软考软件设计师考前6天最后冲刺全攻略📅 2026年5月17日 | 距考试 6 天 | 2026上半年软考时间:5月23-26日一、🔥 2025年最新真题考情深度分析 根据2025年上下半年真题回忆版,以下是最新出题趋势与分值分布࿱…...
【Web安全】-企业资产信息收集(1):信息收集介绍,域名信息收集,主域名查询,ICP备案号查询,备案实体查询,工业和信息化部政务服务平台查询,怎样收集
🦆 个人主页:深邃- ❄️专栏传送门:《C语言》《数据结构与算法》《Web安全》 🌟Gitee仓库:《C语言》《数据结构与算法》 特此声明:本次信息收集均在日期授权时间内收集,并且都将所有人员信息打…...
ARM嵌入式C#开发实战:基于SkiaSharp的低延迟GUI实现
1. 这不是玩具,是ARM嵌入式系统能力的“压力测试仪”很多人第一次听说“在ARM开发板上跑C#游戏”,第一反应是:这能行?C#不是Windows桌面和服务器的语言吗?Mono?.NET Core?ARM板子连图形驱动都配…...
GPT-4稀疏激活原理:2%参数如何实现高效推理
1. 这不是参数堆砌,而是“动态稀疏激活”的工程革命你可能已经看到过那条刷屏的推文:“GPT-4有1.8万亿参数,但每生成一个token只用其中2%。”——这句话像一道闪电劈开了大模型圈的认知惯性。它背后没有玄学,没有营销话术…...
Unity打包踩坑实录:用了EPPlus读取Excel,为什么PC打包后报错?附I18N.dll解决方案
Unity开发实战:EPPlus集成与PC打包的I18N.dll解决方案 在Unity项目开发中,Excel表格作为游戏配置数据的载体被广泛使用。EPPlus作为一款优秀的.NET Excel操作库,因其无需Office环境支持、性能优异等特点,成为Unity开发者的热门选择…...
