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

SpringBoot日常:封装redission starter组件

文章目录

    • 逻辑实现
      • POM.xml
      • RedissionConfig
      • RedissionProperties
      • RedissionUtils
      • spring.factories
    • 功能测试
      • application.yml配置
      • POM.xml
      • TestController
      • 运行测试

本章内容主要介绍如何通过封装相关的redission连接配置和工具类,最终完成一个通用的redission starter。并且本文还会进行对封装的starter进行引入测试,最终实现想要的效果。
参考文章: SpringBoot日常:自定义实现SpringBoot Starter

逻辑实现

下面直接进入主题,介绍整体用到的文件和逻辑内容。首先需要创建一个maven项目,这一步省略

POM.xml

在pom配置文件中引入自动加载和redssion的依赖

<dependencies><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.17.7</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
</dependencies>

RedissionConfig

创建一个RedissionConfig的配置连接类,主要是加载相关的redis配置并进行连接

@Configuration
@ConditionalOnClass(Redisson.class)
@EnableConfigurationProperties({RedissionProperties.class})
public class RedissionConfig {@BeanRedissonClient redissonClient(RedissionProperties redissionProperties) {Config config = new Config();String prefix = "redis://";if (redissionProperties.isSsl()) {//加密prefix = "rediss://";}config.useSingleServer().setAddress(prefix+redissionProperties.getHost()+":"+ redissionProperties.getPort()).setConnectTimeout(redissionProperties.getTimeOut()).setPassword(redissionProperties.getPassword());return Redisson.create(config);}
}

RedissionProperties

创建一个RedissionProperties的配置类,主要包括一些redis相关的连接配置

@ConfigurationProperties(prefix="xxx.redission")
public class RedissionProperties {/*** 连接地址*/private String host;/*** 连接端口号*/private int port;/*** 认证密码*/private String password;/*** 超时时间 默认0*/private int timeOut;public String getHost() {return host;}public void setHost(String host) {this.host = host;}public int getPort() {return port;}public void setPort(int port) {this.port = port;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getTimeOut() {return timeOut;}public void setTimeOut(int timeOut) {this.timeOut = timeOut;}public boolean isSsl() {return isSsl;}public void setSsl(boolean ssl) {isSsl = ssl;}/*** 是否加密 默认不加密 false*/private boolean isSsl;
}

RedissionUtils

创建一个RedissionUtils的工具操作类,该工具类可以方便外部进行数据操作,本工具类并不完善,只有字符串的操作和锁操作,如需其他数据类型的操作,请自行补充

@Component
public final class RedissionUtils {@Autowiredprivate RedissonClient redissonClient;private static final long DEFAULT_GETLOCK_TIMEOUT = 5;public void set(String key, String vul) {redissonClient.getBucket(key).set(vul);}public Object get(String key) {return redissonClient.getBucket(key).get();}public String getString(String key) {RBucket<String> bucket = redissonClient.getBucket(key);return bucket.get();}public <T> void setAndExpire(String key, T value, long expiredTime) {RBucket<T> bucket = redissonClient.getBucket(key);bucket.set(value, expiredTime, TimeUnit.SECONDS);}/*** 获取锁* @param lockKey* @return*/public boolean getLock(String lockKey) {RLock rLock = redissonClient.getLock(lockKey);try {boolean res = rLock.tryLock(DEFAULT_GETLOCK_TIMEOUT,  TimeUnit.SECONDS);return res;} catch (Exception e) {e.printStackTrace();} finally {//无论如何, 最后都要解锁rLock.unlock();}return false;}/**** @param lockKey 锁的key* @param timeOut 获取锁的超时时间* @return*/public boolean getLock(String lockKey, long timeOut) {RLock rLock = redissonClient.getLock(lockKey);try {boolean res = rLock.tryLock(timeOut,  TimeUnit.SECONDS);return res;} catch (Exception e) {e.printStackTrace();} finally {//无论如何, 最后都要解锁rLock.unlock();}return false;}}

spring.factories

在resource/META-INF下需要创建一个自动装载配置文件spring.factories, 里面的内容如下,主要填写配置类和工具类的路径

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\cn.cys.starter.redission.config.RedissionConfig,\cn.cys.starter.redission.utils.RedissionUtils

功能测试

完成逻辑实现以后,需要对上面的maven项目进行打包,再放入maven仓库(本地操作其实就是mvn install)
接着再创建一个maven项目,将redission starter引入,然后进行测试。具体的使用如下

application.yml配置

在application.yml填写相应的配置信息

xxx:redission:host: 192.168.110.110port: 6379password: CR2@wwqqsqsctimeOut: 5isSsl: false

POM.xml

pom文件引入redssion starter包

<dependency><groupId>cn.cys.easy.boot</groupId><artifactId>easy-redission-boot-starter</artifactId><version>1.0.0_base</version>
</dependency>

TestController

本文直接在controller进行引入操作测试

@RestController
public class TestController {@Autowiredprivate RedissionUtils redissonUtils;@GetMapping("/test")public void test() {redissonUtils.set("myname","lisi");System.out.println(redissonUtils.get("myname"));System.out.println(redissonUtils.getString("myname"));System.out.println("========test Redission start");}
}

运行测试

启动服务,调用接口查看
在这里插入图片描述

相关文章:

SpringBoot日常:封装redission starter组件

文章目录 逻辑实现POM.xmlRedissionConfigRedissionPropertiesRedissionUtilsspring.factories 功能测试application.yml配置POM.xmlTestController运行测试 本章内容主要介绍如何通过封装相关的redission连接配置和工具类&#xff0c;最终完成一个通用的redission starter。并…...

腾讯云技术深度解析:构建高效云原生应用与数据安全管理

腾讯云技术深度解析&#xff1a;构建高效云原生应用与数据安全管理 在当今快速发展的技术环境中&#xff0c;云计算已经成为企业数字化转型的关键驱动力。腾讯云作为中国领先的云服务提供商&#xff0c;凭借其卓越的技术和创新能力&#xff0c;为企业提供了高效、可扩展的云原…...

ACM与蓝桥杯竞赛指南 基本输入输出格式二

A B || 继续看第二个AB问题&#xff0c;A B || &#xff0c;大家可以先自行读题&#xff0c;或者有经验直接看输入输出格式&#xff0c;发现依然是求AB&#xff0c;但它的输入数据为&#xff1a; 2 1 5 10 20 输出&#xff1a; 6 20 此题相比第一道而言&#xff0c;本…...

解决SolidWorks装配体无法更改透明度问题

这个问题是在零件上各个部件显示正常&#xff0c;且透明度可以更改&#xff0c;但是一到装配体上就出现问题都变成了灰色。更改透明度也不行。 解决方法&#xff1a; 1、因为该装配体里面存在过多的零部件层级的自定义外观&#xff08;这些外观可能互相之前有了干扰&#xff0…...

2024_newstar_week1_crypto

baby_mod 题目 from Crypto.Util.number import * from enc import flagm bytes_to_long(flag) p getPrime(512) q getPrime(512) r getPrime(777) t getPrime(777) tmp getPrime(15) e 65537 n p*q print(f"c {pow(m,e,n)}") print(f"leak {p*r-q*…...

6.2 URDF集成Rviz基本流程

前面介绍过&#xff0c;URDF 不能单独使用&#xff0c;需要结合 Rviz 或 Gazebo&#xff0c;URDF 只是一个文件&#xff0c;需要在 Rviz 或 Gazebo 中渲染成图形化的机器人模型&#xff0c;当前&#xff0c;首先演示URDF与Rviz的集成使用&#xff0c;因为URDF与Rviz的集成较之于…...

双系统一体机电脑无法启动报错“Something has gone serously wrong: SBAT self-check failed: Security Policy Violation”

双系统一体机电脑无法启动 问题搜索解决办法解决开启时 F2 进入系统设置界面选择“疑难解答”选择“高级选项”选择“UEFI固件设置”进入“Start Menu”界面选择“Security”关闭相关选项 问题 在2024/8/14日Windows环境&#xff0c;系统更新了两个Windows更新项后&#xff0c…...

八股面试2(自用)

mysql存储引擎 存储引擎&#xff1a;定义数据的存储方式&#xff0c;以及数据读取的实现逻辑 在以前数据库5.5默认MyISAM引擎&#xff0c;之后默认InnoDB引擎 MyISAM引擎的数据和索引是分开存储的&#xff0c;InnoDb将索引和文件存储在同一个文件。 MyISAM不支持事务&#…...

Leetcode 347 Top K Frequent Elements

题意&#xff1a; 求前k个出现频率最高的元素 首先得到一个频率图这是肯定的&#xff0c;下一步要考虑建立一个堆&#xff0c;堆中保存着前k个频率最大的数字&#xff0c;这个怎么做&#xff0c;可以用customized cmp来做&#xff0c;把数字存进去完事儿。注意这里不用 保存所有…...

[Linux网络编程]03-TCP协议

一.TCP协议数据通信的过程 TCP数据报如下&#xff0c;数据报中的标志位双端通信的关键。 三次握手: 1.客户端向服务端发送SYN标志位&#xff0c;请求建立连接&#xff0c;同时发送空包 2.服务端向客户端回发ACK标志位(即确认标志位&#xff0c;任何一端发送数据后都需要另一端…...

Windows和Linux在客户端/服务端在安全攻防方面的区别

Windows和Linux在客户端/服务端的安全攻防上存在一些显著区别&#xff0c;主要体现在系统架构、权限管理、安全工具、更新机制以及社区支持等方面。 一、系统架构与设计差异 1. 内核架构 Windows&#xff1a;Windows是一个闭源的操作系统&#xff0c;由微软开发和维护&#…...

VUE 仿神州租车-开放平台

项目背景&#xff1a; 神州租车是一家提供汽车租赁服务的公司&#xff0c;其API开放平台为开发者提供了访问神州租车相关服务和数据的接口。用VUE技术来仿照其开发平台。 成果展示&#xff1a; 首页&#xff1a; API文档&#xff1a; 关于我们&#xff1a;...

计算机的错误计算(一百二十九)

摘要 用错数解释计算机的错误计算&#xff08;一百二十七&#xff09;中的计算错误的原因。 从&#xff08;一百二十七&#xff09;知&#xff0c; 有四种形式&#xff1a; 四个 分别有1位、8位、8位、0位错误数字。 下面用错数解释前面3个错误计算的由来。 &#xff08;1&a…...

process.platform 作用

process.platform 可以获取当前运行 Node.js 进程的操作系统平台的信息。 一、平台特定的代码执行 1. 适应不同操作系统 不同的操作系统可能有不同的行为、文件路径格式、命令行参数等。通过检查process.platform的值&#xff0c;可以根据当前运行的平台执行特定的代码逻辑。…...

Java项目-基于springboot框架的企业客户信息反馈系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…...

《深度学习》dlib 人脸应用实例 仿射变换 换脸术

目录 一、仿射变换 1、什么是仿射变换 2、原理 3、图像的仿射变换 1&#xff09;图像的几何变换主要包括 2&#xff09;图像的几何变换主要分为 1、刚性变换&#xff1a; 2、仿射变换 3、透视变换 3&#xff09;常见仿射变换 二、案例实现 1、定义关键点索引 2、定…...

springboot044美容院管理系统(论文+源码)_kaic

本科毕业设计论文 题目&#xff1a;美容院管理系统设计与实现 系 别&#xff1a; XX系&#xff08;全称&#xff09; 专 业&#xff1a; 软件工程 班 级&#xff1a; 软件工程15201 学生姓名&#xff1a; 学生学号&#xff1a; 指导教师&#xff1a; 导师…...

大数据新视界 --大数据大厂之数据脱敏技术在大数据中的应用与挑战

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

Erric Gamma 关于resuable code的采访

采访地址 The risk of speculating Bill Venners: The GoF book says, “The key to maximizing reuse lies in anticipating new requirements and changes to existing requirements, and in designing your systems so they can evolve accordingly. To design a system s…...

【Ubuntu18.04命令行code打不开】可能的解决方法

目录 问题&#xff1a;命令行code打不开文件尝试① kimi是这么说的② sudo apt-get install apparmor apparmor_utils③ 在混沌的操作完以上一通后&#xff0c;sudo apt-get install snapd 我试了将近一个小时 : ( so depressed 我只是想用vscode打开个文件夹&#xff0c;我甚至…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...

算法250609 高精度

加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...

【题解-洛谷】P10480 可达性统计

题目&#xff1a;P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图&#xff0c;分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M&#xff0c;接下来 M M M 行每行两个整数 x , y x,y x,y&#xff0c;表示从 …...

Redis专题-实战篇一-基于Session和Redis实现登录业务

GitHub项目地址&#xff1a;https://github.com/whltaoin/redisLearningProject_hm-dianping 基于Session实现登录业务功能提交版本码&#xff1a;e34399f 基于Redis实现登录业务提交版本码&#xff1a;60bf740 一、导入黑马点评后端项目 项目架构图 1. 前期阶段2. 后续阶段导…...

迁移科技3D视觉系统:重塑纸箱拆垛场景的智能革命

一、传统拆垛场景的困局与破局之道 在汽车零部件仓库中&#xff0c;每天有超过2万只异形纸箱需要拆垛分拣。传统人工拆垛面临三大挑战&#xff1a; 效率瓶颈&#xff1a;工人每小时仅能处理200-300件&#xff0c;且存在间歇性疲劳安全隐患&#xff1a;20kg以上重箱搬运导致年…...