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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82996.shtml
英文地址,請注明出處:http://en.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…