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");}
}

运行测试

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

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

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

相关文章

洛谷 P1038 [NOIP2003 提高组] 神经网络(拓扑排序)

题目传送门 感觉这道题需要我们高超的语文阅读水平…… 解题思路 我们发现要计算一个细胞的状态值&#xff08;&#xff09;&#xff0c;就需要先算出有边指向它的其他细胞对答案的贡献&#xff1b; 这是有拓扑序的&#xff0c;所以我们想到拓扑排序。 题目中说了&#xff0…

FastDFS单节点部署

FastDFS单节点部署 1、FastDFS入门1.1 分布式文件系统1.2 FastDFS 简介1.3 FastDFS 发展历史1.4 FastDFS 整体架构1.5 FastDFS 线上使用者 2、FastDFS 环境搭建2.1 FastDFS 安装2.1.1 安装前的准备2.1.2 安装 libfastcommon库2.1.3 安装 FastDFS 2.2FastDFS 配置2.2.1 去掉/etc…

即使是编程新手,也能利用ChatGPT编写高质量的EA

在外汇交易领域&#xff0c;MetaTrader是一款备受欢迎的交易软件&#xff0c;包括MT5和MT4&#xff0c;提供了众多强大的分析工具和自动化交易功能。对于没有编程经验的新手而言&#xff0c;编写专家顾问&#xff08;EA&#xff09;可能显得既复杂又令人望而却步。幸运的是&…

数据结构——链表,哈希表

文章目录 链表python实现双向链表复杂度分析 哈希表&#xff08;散列表&#xff09;python实现哈希表哈希表的应用 链表 python实现 class Node:def __init__(self, item):self.item itemself.next Nonedef head_create_linklist(li):head Node(li[0])for element in li[1…

spring6 IoC容器详解

目录 一、引言 示例开发 示例分析 启用Log4j2日志框架 使用方式 二、IoC容器 IoC容器 1.控制反转&#xff08;IoC&#xff09; 2.依赖注入 3.IoC容器在Spring的实现 基于XML管理Bean 依赖注入之setter注入 依赖注入之构造器注入 Bean生命周期 基于xml自动装配 …

基于SSM+微信小程序的打印室预约管理系统(打印2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的打印室预约管理系统实现了管理员和用户两个角色。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;附近打印店管理&#xff0c;文件打印管理&#xff0c;当…

ui自动化知识点-web端

UI : User Interface( ⽤户接⼝ - ⽤户界⾯ ) ,主要包括: app 、 web ui ⾃动化测试:使⽤⼯具或代码执⾏⽤例的过程 什么样的项⽬适合做⾃动化:1、需要回归测试项⽬(甲⽅⾃营项⽬、⾦融、电商)2、需求变动不频繁:稳定的模块3、项⽬周期⻓的项⽬:(甲⽅⾃营项⽬、6个…

YOLO11改进 | 主干网络 | 将backbone替换为Swin-Transformer结构【论文必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文给大家带来的教程是将YOLO11的backb…

LaTeX教程(016)-LaTeX文档结构(16)

LaTeX教程(016)- LaTeX \LaTeX LATE​X文档结构(16) 接上一讲 我们前面知道&#xff0c;\vref是对\ref的升级&#xff0c;而varioref包也提供了一个对\pageref升级的命令\vpageref。它和\vref的原理很相似&#xff0c;内置了一些判断。 \vpageref[same-page][other-page]{ke…

【C++】C++当中的复合类型——引用和指针

C当中的复合类型 最近开始系统地学习 C 的语法&#xff0c;参考的主要资料来自于 C Primer 第五版&#xff0c;对于学习过程中所遇到的较难理解的点&#xff0c;我会以blog的形式对问题和内容进行记录&#xff0c;并进行进一步地探讨。 这一部分的内容对应于参考资料 C Prime…

spring-cloud-alibaba-nacos-config2023.0.1.*启动打印配置文件内容

**背景&#xff1a;**在开发测试过程中如果可以打印出配置文件的内容&#xff0c;方便确认配置是否准确&#xff1b;那么如何才可以打印出来呢&#xff1b; spring-cloud-alibaba-nacos-config 调整日志级别 logging:level:com.alibaba.cloud.nacos.configdata.NacosConfigD…

Linux操作系统与windows无法相互复制问题

请先看完此文在进行操作&#xff01;&#xff01;&#xff01; 对于无法复制我们逐层分析&#xff1a; 1.为什么无法复制是不是少了什么工具(open-vm-tools-destop) 上网查阅可以看到如下 2.在此之前我的虚拟机装完Ubuntu 16.04的linux系统无法进行apt update(参考一下) li…

华三服务器R4900 G5在图形界面使用PMC阵列卡(P460-B4)创建RAID,并安装系统(中文教程)

环境以用户需求安装Centos7.9&#xff0c;服务器使用9块900G硬盘&#xff0c;创建RAID1和RAID6&#xff0c;留一块作为热备盘。 使用笔记本通过HDM管理口&#xff08;&#xff09;登录 使用VGA&#xff08;&#xff09;线连接显示器和使用usb线连接键盘鼠标&#xff0c;进行窗…

excel判断某一列(A列)中的数据是否在另一列(B列)中

如B列如果有7个元素&#xff0c;在A列右边的空白列中&#xff0c;输入如下公式&#xff1a; COUNTIF($B$1:$B$7,A1), 其中&#xff0c;$B$1:$B$7代表A列中的所有数据即绝对范围&#xff0c;A1代表B列中的一个单元格.

Servlet(一)

一.什么是servlet Servlet 是一种实现动态页面的技术。 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app。 1.回顾 动态页面 vs 静态页面 静态页面也就是内容始终固定的页面。即使 用户不同/时间不同/输入的参数不同 , 页面内容也不会发生变化。(除…

从 Microsoft 官网下载 Windows 10

方法一&#xff1a; 打开 Microsoft 官网&#xff1a; 打开开发人员工具&#xff08;按 F12 或右键点击“检查”&#xff09;。 点击“电脑模拟手机”按钮&#xff0c;即下图&#xff1a; 点击后重新加载此网页&#xff0c;即可看到下载选项。

Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)

0x01 产品介绍&#xff1a; Palo Alto Networks Expedition 是一款强大的工具&#xff0c;帮助用户有效地迁移和优化网络安全策略&#xff0c;提升安全管理的效率和效果。它的自动化功能、策略分析和可视化报告使其在网络安全领域中成为一个重要的解决方案。 0x02 漏洞描述&am…

windows下安装、配置neo4j并服务化启动

第一步&#xff1a;下载Neo4j压缩包 官网下载地址&#xff1a;https://neo4j.com/download-center/ &#xff08;官网下载真的非常慢&#xff0c;而且会自己中断&#xff0c;建议从以下链接下载&#xff09; 百度网盘下载地址&#xff1a;链接&#xff1a;https://pan.baid…

周易解读:八卦02,八卦所代表的基本事物

八 卦02 上一节&#xff0c;我是讲完了八卦的卦象的画法的问题。这一节&#xff0c;我来尝试着去讲解八卦所代表的自然事物。 八卦是谁发明的呢&#xff1f;根据《周易说卦传》的说法&#xff0c;八卦是伏羲发明的。伏羲氏仰观天文&#xff0c;俯察地理&#xff0c;从中提取…

项目模块二:日志宏

一、代码展示 二、补充知识 1、LOG(level, format, ...) format 是用于宏识别格式化&#xff0c;类似于 printf("%s", str); 里面的 "%s" ... 不定参&#xff0c;传入宏的参数除了 level, format, 还有不确定个数的参数。 2、红色 \ 由于宏只能写在一…