springboot serverEndpoint導(dǎo)致@resource注解不生效
在 Spring Boot 中,@Resource 注解用于注入依賴,RedisTemplate 用于與 Redis 數(shù)據(jù)庫交互。
如果你在 Spring Boot 中使用了 @ServerEndpoint 注解創(chuàng)建 WebSocket,可能會導(dǎo)致 @Resource 注解無法注入 RedisTemplate 的問題。
這是因?yàn)?nbsp;@ServerEndpoint 使用了自己的內(nèi)部類加載器加載,而不是應(yīng)用程序類加載器。這意味著 @Resource 注解無法訪問應(yīng)用程序上下文中的 RedisTemplate 實(shí)例。
要解決這個問題,你可以使用 Spring Boot 提供的 @Component 注解代替 @ServerEndpoint,然后在組件類中使用 @ServerEndpoint 注解創(chuàng)建 WebSocket。這將使用應(yīng)用程序類加載器加載組件類,使 @Resource 注解能夠正常注入 RedisTemplate 實(shí)例。
另一種解決方法是將 RedisTemplate 實(shí)例化為靜態(tài)屬性,然后在 @ServerEndpoint 注解的類中訪問該屬性,而不是使用 @Resource 注解進(jìn)行注入。
@Component
public class WebSocketComponent {
private static RedisTemplate<String, String> redisTemplate;
@Resource
public void setRedisTemplate(RedisTemplate<String, String> redisTemplate) {
WebSocketComponent.redisTemplate = redisTemplate;
}
@ServerEndpoint("/websocket")
public static class WebSocketServerEndpoint {
// 使用 WebSocketComponent.redisTemplate 訪問 RedisTemplate 實(shí)例
}
}
這樣做將確保 RedisTemplate 實(shí)例只會在應(yīng)用程序啟動時實(shí)例化一次,并且可以在 @ServerEndpoint 注解的類中訪問該實(shí)例。
到此這篇關(guān)于springboot serverEndpoint導(dǎo)致@resource注解不生效的文章就介紹到這了,更多相關(guān)springboot @resource注解不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解springboot+mybatis-plue實(shí)現(xiàn)內(nèi)置的CRUD使用詳情
這篇文章主要介紹了詳解springboot+mybatis-plue實(shí)現(xiàn)內(nèi)置的CRUD使用詳情,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Java調(diào)用UniHttp接口請求失敗的三種解決策略
在當(dāng)今數(shù)字化時代,不管是內(nèi)部系統(tǒng)之間還是跟外部系統(tǒng)的對接,接口調(diào)用已成為軟件開發(fā)中不可或缺的一部分,本文主要介紹了Java調(diào)用UniHttp接口請求失敗的三種解決策略,希望對大家有所幫助2025-09-09
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(10)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
java實(shí)現(xiàn)字符與Unicode碼轉(zhuǎn)換(附源碼)
在 Java 開發(fā)中,經(jīng)常需要在字符(char 或 String)與其對應(yīng)的Unicode 碼點(diǎn)(int)之間進(jìn)行相互轉(zhuǎn)換,下面小編就來和大家詳細(xì)介紹一下具體實(shí)現(xiàn)方法吧2025-07-07
Java使用ThreadLocal實(shí)現(xiàn)當(dāng)前登錄信息的存取功能
ThreadLocal和其他并發(fā)工具一樣,也是用于解決多線程并發(fā)訪問,下這篇文章主要給大家介紹了關(guān)于Java使用ThreadLocal實(shí)現(xiàn)當(dāng)前登錄信息的存取功能,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
Java導(dǎo)出excel時合并同一列中相同內(nèi)容的行思路詳解
這篇文章主要介紹了Java導(dǎo)出excel時合并同一列中相同內(nèi)容的行,需要的朋友可以參考下2018-06-06
SpringBoot項(xiàng)目調(diào)優(yōu)及垃圾回收器的比較詳解
這篇文章主要介紹了SpringBoot項(xiàng)目調(diào)優(yōu)及垃圾回收器的比較詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

