springboot项目下面的单元测试注入的RedisConnectionFactory类redisConnectionFactory值为什么为空呢?

你遇到的问题是:

RedisConnectionFactory redisConnectionFactory 在单元测试中为 null

这是 Spring Boot 单元测试中非常常见的问题,根本原因是你的测试类没有启用 Spring 容器上下文,导致 @Resource 注解无法注入 Bean。

✅ 正确做法:使用 Spring Boot 的单元测试支持
✅ 1. 添加必要的注解
你需要在你的测试类上加上如下两个关键注解:

Java
深色版本
@RunWith(SpringRunner.class)
@SpringBootTest
这样 Spring 才能启动上下文,并完成自动装配。

✅ 2. 修改后的完整代码如下:
Java
深色版本
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.RedisConnectionFactory;

import javax.annotation.Resource;
import java.util.Properties;

@RunWith(SpringRunner.class)        // 启用 Spring 测试支持
@SpringBootTest                      // 启动 Spring Boot 上下文
public class RedisConnectionFactoryTest {

    @Resource
    private RedisConnectionFactory redisConnectionFactory;

    @Test
    public void test1() {
        // 默认 class org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
        System.out.println(redisConnectionFactory.getClass());

        // 当前db的key数量
        Long keyCount = redisConnectionFactory.getConnection().dbSize();
        System.out.println("当前db的key数量 = " + keyCount);

        Properties properties = redisConnectionFactory.getConnection().info();
        System.out.println(properties);
    }
}
📌 注意事项:
如果你在项目中同时配置了 Jedis 和 Lettuce(如你的 application.yml 所示),Spring Boot 默认会优先使用 Lettuce。
确保你的 Redis 服务器可以被访问:
IP、端口是否正确?
是否有防火墙限制?
密码是否正确?
🔍 可选:查看当前使用的 Redis 客户端类型
你可以通过打印 redisConnectionFactory 的类型来确认当前使用的是哪个客户端:

Java
深色版本
System.out.println(redisConnectionFactory.getClass());
// 输出示例:class org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
✅ 补充说明:为什么之前为空?
你原来的测试类只是一个普通的 JUnit 测试类,没有加载 Spring 上下文,所以 Spring 无法识别 @Resource 或 @Autowired 注解,也就不会为你注入任何 Bean。

原因    解释
没有 @SpringBootTest    Spring 上下文未启动,Bean 无法注入
没有 @RunWith(SpringRunner.class)    JUnit 不知道要和 Spring 集成
所以 redisConnectionFactory == null    Spring 没有注入
✅ 总结
问题    原因    解决方案
redisConnectionFactory 为 null    没有启用 Spring 上下文    添加 @SpringBootTest 和 @RunWith(SpringRunner.class)
无法连接 Redis    配置错误或网络不通    检查 Redis 地址、密码、端口、防火墙等
不确定使用的是 Jedis 还是 Lettuce    默认是 Lettuce    查看 redisConnectionFactory.getClass()

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

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

相关文章

光电学、计算机科学及算法国际会议(OCSA 2025)征稿启事​

在科技浪潮奔涌向前的当下,光电学、计算机科学及算法领域的创新成果不断涌现,持续重塑着各个行业的格局,深刻影响着我们的生活。为了进一步促进该领域的学术交流与合作,汇聚全球智慧,光电学、计算机科学及算法国际会议…

小样本分类新突破:QPT技术详解

问题导向式提示调优(QPT) 这篇论文主要讲了一个针对小样本(数据量少)文本分类问题的新方法,叫问题导向式提示调优(QPT)。 核心思路是让预训练语言模型(比如BERT的升级版RoBERTa)在少量标注数据下,通过设计特定的“提问式模板”和“标签词扩展技术”来提升分类效果。…

Oracle EBS 12.1 处理ISG 发布的wsdl 被请求时遇到500错误

Oracle 12.1.3 通过ISG 发布了一个服务,该服务在被频繁调用的时候,出现500 错误,临时解决方案是可以通过重启oafm组件解决,但是需要定位原因。 排查日志路径 $INST_TOP/logs/ora/10.1.3/opmn/default_group~oafm~default_group~1…

shadcn/ui

文章目录 前言✅ 核心特点📦 支持组件(常用)🚀 安装使用(框架支持)初始化(Next.js 项目为例)添加一个组件 🧠 对比其他组件库📘 官方资源✅ 总结✅ 功能特性&…

力扣每日一题——找到离给定两个节点最近的节点

目录 题目链接:2359. 找到离给定两个节点最近的节点 - 力扣(LeetCode) 题目描述 解法一:双指针路径交汇法​ 基本思路 关键步骤 为什么这样可行呢我请问了? 举个例子 特殊情况 Java写法: C写法&a…

Termux可用中间人网络测试工具Xerosploit

Termux可用中间人网络测试工具Xerosploit。 Xerosploit 是一款基于 MITM 的本地网络渗透测试工具包。 食用方法: git clone https://github.com/LionSec/xerosploit cd xerosploit sudo python3 install.py 运行: sudo xerosploit 使用备注&#xff1…

vue3 导出excel

需求&#xff1a;导出自带格式的excel表格 1.自定义二维数组格式 导出 全部代码&#xff1a; <el-button click"exportExcel">导出</el-button> const exportExcel () > {const data [[商品, 单价, 数量, 总价],[A, 100, 1.55, { t: n, f: B2*C2…

【SQL】关键字

ORDER BY ORDER BY(排序) 语句可以按照一个或多个列的值进行升序&#xff08;ASC&#xff09;或降序&#xff08;DESC&#xff09;排序。 MAX / MIN MAX() 函数返回一组值中的最大值。这个函数常用于数字字段&#xff0c;但也可以用于文本字段来找出按字典顺序最后的元素。 …

深度学习篇---OC-SORT实际应用效果

OC-SORT 算法在实际应用中的效果可从准确性、鲁棒性、效率三个核心维度评估,其表现与传统多目标跟踪算法(如 SORT、DeepSORT)相比有显著提升,尤其在复杂场景中优势突出。以下是具体分析: 一、准确性:目标关联更可靠 1. 遮挡场景下的 ID 保持能力 优势表现: 传统算法(…

处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249

最近在做部门知识库&#xff0c;选用的dify&#xff0c;作为rag的工具&#xff0c;但是经过多个对比&#xff0c;最后发现&#xff0c; 比较好用的是&#xff0c;纳米搜索&#xff0c;但是可惜纳米搜索无法在内网使用&#xff0c;无法把知识库放到本地&#xff0c;导致 有信息…

NSSCTF [NISACTF 2022]ezheap

2058.[NISACTF 2022]ezheap(堆溢出) [NISACTF 2022]ezheap 1.准备 2.ida分析 main函数 int __cdecl main(int argc, const char **argv, const char **envp) {char *command; // [esp8h] [ebp-10h]char *s; // [espCh] [ebp-Ch]setbuf(stdin, 0);setbuf(stdout, 0);s (cha…

微信小店推客系统达人用户管理的数据支持和便利

达人粉丝画像关联&#xff1a;系统通过技术手段&#xff0c;一定程度上获取达人粉丝的画像数据&#xff0c;如年龄分布、性别比例、地域分布、消费偏好等。运营者可以根据这些粉丝画像&#xff0c;为达人匹配更符合其粉丝需求的商品。例如&#xff0c;若某达人的粉丝以年轻女性…

LeetCode 215:数组中的第K个最大元素 - 两种高效解法详解

文章目录 问题描述解法一&#xff1a;快速选择算法&#xff08;QuickSelect&#xff09;算法思想算法步骤Java实现复杂度分析算法特点 解法二&#xff1a;最小堆&#xff08;优先队列&#xff09;算法思想算法步骤Java实现复杂度分析算法特点 两种解法比较测试示例总结 在算法面…

视频压制(Video Encoding/Compression)

视频压制是指通过特定的算法和技术&#xff0c;将原始视频文件转换为更小体积或更适合传播的格式的过程。其核心目的是在尽量保持画质的前提下&#xff0c;减少视频的文件大小&#xff0c;或适配不同播放设备、网络环境的需求。 --- ### **关键概念解析** 1. **为什么需要压制…

如何做好一个决策:基于 Excel的决策树+敏感性分析应用

决策点: 开发新产品? (是 / 否) 因素 (如果是): 市场接受度 (高 / 中 / 低);概率: 高(0.3), 中(0.5), 低(0.2) 结果值 (NPV): 高(+$1M), 中(+$0.2M), 低(-$0.5M) 不开发成本/收益: $0 开发计算: EMV(市场接受度) = (0.3 * 1M) + (0.5 * 0.2M) + (0.2 * -0.5M) = $0.3M + $…

Java中的设计模式实战:单例、工厂、策略模式的最佳实践

Java中的设计模式实战&#xff1a;单例、工厂、策略模式的最佳实践 在Java开发中&#xff0c;设计模式是构建高效、可维护、可扩展应用程序的关键。本文将深入探讨三种常见且实用的设计模式&#xff1a;单例模式、工厂模式和策略模式&#xff0c;并通过详细代码实例&#xff0…

PyTorch学习(1):张量(Tensor)核心操作详解

PyTorch学习(1)&#xff1a;张量&#xff08;Tensor&#xff09;核心操作详解 一、张量&#xff08;Tensor&#xff09;核心操作详解 张量是PyTorch的基础数据结构&#xff0c;类似于NumPy的ndarray&#xff0c;但支持GPU加速和自动微分。 1. 张量创建与基础属性 import to…

Docker部署Spark大数据组件:配置log4j日志

上一篇《Docker部署Spark大数据组件》中&#xff0c;日志是输出到console的&#xff0c;如果有将日志输出到文件的需要&#xff0c;需要进一步配置。 配置将日志同时输出到console和file 1、停止spark集群 docker-compose down -v 2、使用自带log4j日志配置模板配置 cp -f …

Nginx Lua模块(OpenResty)实战:动态化、智能化你的Nginx,实现复杂Web逻辑 (2025)

更多服务器知识&#xff0c;尽在hostol.com 嘿&#xff0c;各位Nginx的“铁杆粉丝”和“配置大师”们&#xff01;咱们都知道&#xff0c;Nginx以其超凡的性能、稳定性和丰富的模块化功能&#xff0c;在Web服务器、反向代理、负载均衡等领域独步青云&#xff0c;简直是服务器软…

一、CentOS7通过kubeadm安装K8S 1.20.1版本

一、准备机器 所有节点执行 准备3台虚拟机&#xff08;2核4G&#xff0c;CentOS 7&#xff09;&#xff0c;配置如下&#xff1a; hostnamectl set-hostname k8s-master # 在Master节点执行 hostnamectl set-hostname k8s-node1 # Worker1节点执行 hostnamectl set-hostna…