八年開發程序員淺析SpringBoot 之 Shiro 與 Redis 多級緩存問題

前言

來自不愿意透露姓名的小師弟的投稿。這篇主要講了,項目中配置了多緩存遇到的坑,以及解決辦法。

發現問題

在一次項目實踐中有實現多級緩存其中有已經包括了 Shiro 的 Cache ,本以為開啟 redis 的緩存是一件很簡單的事情只需要在啟動類上加上 @EnableCaching 注解就會啟動緩存管理了,但是問題出現了。

重要錯誤日志截圖

java.lang.IllegalStateException: @Bean method ShiroConfig.cacheManager called as a bean reference for type [org.apache.shiro.cache.ehcache.EhCacheManager] but overridden by non-compatible bean instance of type [org.springframework.data.redis.cache.RedisCacheManager]. Overriding bean of same name declared in: class path resource [org/springframework/boot/autoconfigure/cache/RedisCacheConfiguration.class]

錯誤日志分析

看日志大概就發現一個非法狀態異常,我們繼續查看接下來的日志有一段非常的重要日志 Overriding bean of same name 翻譯過來的意思是幫你重寫了一個名字一樣的 Bean,我再看看日志里有提到 RedisCacheManager 與我自己實現的 cacheManager 到這里我已經感覺到問題所在了,以下圖一為 RedisCacheManager 部分實現代碼。圖二為我自己的 Shiro 的 cacheManager 實現方法。

解決問題 有 Spring 基礎的大家都應該還記得 Spring 不允許有相同的 Bean 出現。現在問題就在于 Redis 緩存管理器和 Shiro 的緩存管理器重名了,而這二者又是通過 Spring 管理,所以 Spring 讀取這二者的時候,產生沖突了。解決問題的方法很簡單:在自己實現 EhCacheManager 時把 @Bean 指定一個名字可以像這樣 @Bean(name ="ehCacheManager" ),還有其他辦法大家可以在想辦法實現一下嘿嘿。

結語

雖然我們都知道 Spring 的報錯是非常多的,但是在 Spring 的報錯日志中查找問題所在是非常有用的,大部分的錯誤,日志都會給你反饋。

如果本文對你哪怕有一丁點幫助,請幫忙點好看。你的好看是我堅持寫作的動力。

轉載于:https://juejin.im/post/5c8f15fd5188252d5d31d255

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Web端H.265播放器研發解密

音視頻編解碼對于前端工程師是一個比較少涉足的領域,涉及到流媒體技術中的文本、圖形、圖像、音頻和視頻多種理論知識的學習,才能夠應用到具體實踐中,本團隊在多媒體領域深耕兩年多,才算是有一定產出,我們自研web播放器…

拳擊 武術java父類,拳擊是一種很有力量的武術類型

原標題:拳擊是一種很有力量的武術類型拳擊是一種很有力量的武術類型,拳擊比賽策略有很多,圍繩技術是其中之一。那么拳擊比賽策略技巧有哪些呢?下面養生之道網為您解析拳擊比賽策略技巧有哪些,看看吧。1、當拳手靠在圍繩…

捧上天的AI落地困難,“ 不懂變通”的華為云如何應付?

前幾年,AI幾乎被捧上天,各大公司傾巢出動,推出了不少吸眼球的應用和產品。如今,這些AI成果是否真得讓企業從中獲得價值?繞不開的數據、隱私和安全問題作何解?不同領域、不同規模、不同技術能力的企業如何最…

Apache-Flink深度解析-DataStream-Connectors之Kafka

Kafka 簡介Apache Kafka是一個分布式發布-訂閱消息傳遞系統。 它最初由LinkedIn公司開發,LinkedIn于2010年貢獻給了Apache基金會并成為頂級開源項目。Kafka用于構建實時數據管道和流式應用程序。它具有水平擴展性、容錯性、極快的速度,目前也得到了廣泛的…

Java使用繼承的語法是,Java基礎語法八 繼承

1、超類和子類超類和子類父類與子類多態:一個對象變量可以指示多種實際類型的現象稱為多態一個變量可以引用父類對象,也可以引用其子類對象,這就是多態。不能將一個超類的引用賦給子類變量,因為調用子類方法時可能發生運行錯誤子類…

kaka 1.0.0 重磅發布,服務于后端的事件領域模型框架。

百度智能云 云生態狂歡季 熱門云產品1折起>>> kaka 1.0.0正式發布了,從三個月前的kaka-notice-lib 1.0.0的發布,經過多次研磨,終于迎來了本次重大更新。 kaka是一款服務于java后端的事件領域模型框架,主要目的為解耦業…

java配置文件工具類,java項目加載配置文件的工具類

java項目加載配置文件的工具類package com.loadproperties;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class ConfigUtil {private static InputStream input;private volatile Properties configuration new Properties();/…

如何把WAV格式音頻轉換為MP3格式

WAV為微軟公司(Microsoft)開發的一種聲音文件格式,它符合RIFF(Resource Interchange File Format)文件規范,用于保存Windows平臺的音頻信息資源,被Windows平臺及其應用程序所廣泛支持,因此在聲音文件質量和CD相差無幾&…

php 異步處理類,php異步處理類

該類可以請求HTTP和HTTPS協議,還可以處理301、302重定向以及GZIP壓縮等。[PHP]代碼//使用方法require(asynHandle.class.php);$obj new asynHandle();$result $obj->Request(http://baidu.com);$result2 $obj->Get(https://mail.google.com/);echo "{…

惡意軟件盯上了加密貨幣,兩家以色列公司受到攻擊

近日,網絡安全公司Palo Alto Networks威脅研究部門Unit 42發博稱,已確認Cardinal RAT自2017年4月起對兩家從事外匯和加密交易軟件開發的以色列金融科技公司發起過攻擊。 Cardinal RAT是可遠程訪問特洛伊木馬(RAT),攻擊…

php 自定義打印模板下載,PHP – 創建自定義模板系統?

我已經在這里搜索過,令人驚訝的是我找不到答案.我發現了一個類似的線程,但沒有真正的解決方案.復雜的部分是循環,如果我不需要循環我可以只是做一個常規替換.所以,我有一個帶有一些標記的.html文件,如下所示:{{startloop}}{{imgname}}{{endLoop}}我想要做的是用其他…

騰訊財報中“最大秘密”:2018云收入91億元,交首份TO B答卷

騰訊財報中“最大秘密”云業務收入又一次被公開了:2018年,騰訊云收入91億元,增長100%。 3月21日,騰訊發布2018年Q4及全年財報,2018全年收入3126.94億元同比增長32%,凈利潤(Non-GAAP)774.69億元。而被列進“…

根據坐標如何在matlab中l連成曲線,matlab中,如何將兩條曲線畫在一個坐標系里,plot(x1,x2,y1,y2)還是怎樣...

matlab中,如何將兩條曲線畫在一個坐標系里,plot(x1,x2,y1,y2)還是怎樣以下文字資料是由(歷史新知網www.lishixinzhi.com)小編為大家搜集整理后發布的內容,讓我們趕快一起來看一下吧!matlab中,如何將兩條曲線畫在一個坐…

Android 物聯網 傳感器

前幾天做了一個嵌入式課設。將傳感器收集到的數據傳到手機制作的APP里。 項目中涉及到的主要的java代碼和xml布局文件上傳到了github,https://github.com/123JACK123jack/Android轉載于:https://www.cnblogs.com/libin123/p/10578601.html

java已被弱化簽名,高效Java第四十條建議:謹慎設計方法簽名

作用有助于設計易于學習和使用的API。如何做——謹慎地選擇方法的名稱1.選擇易于理解的,并且與同一個包中的其他名稱風格一致的名稱。2.選擇與大眾認可的名稱相一致的名稱。如何做——不要過于追求提供便利的方法每個方法都應該盡其所能。方法太多會使類難以學習、使…

curl有php內存緩存,PHP CURL內存泄露的解決方法

PHP CURL內存泄露的解決方法curl配置平淡無奇,長時間運行發現一個嚴重問題,內存泄露!不論用單線程和多線程都無法避免!是curl訪問https站點的時候有bug!內存泄露可以通過linux的top命令發現,使用php函數mem…

MySQL學習【第五篇SQL語句上】

一.mysql命令 1.連接服務端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql -uroot -p123 -hlocalhost 4.mysql -uroot -p123 2.mysql登陸后的一些命令 1.\h或者help   查看幫助 2.\G       格式化查看數據(以k…

phpexcel.php linux,phpexcel在linux系統報錯如何解決

最近有個tp3.2的項目遷移到linux系統上了,突然有天發現原本在win server 2008上運行沒問題的excel導出功能在新的系統上不能使用了。報錯如下:說是1762行有問題,找到這個文件的代碼看看:/*** Get an instance of this class** acc…

優雅的redux異步中間件 redux-effect

不吹不黑,redux蠻好用。只是有時略顯繁瑣,叫我定義每一個action、action type、使用時還要在組件上綁定一遍,臣妾做不到呀!下面分享一種個人比較傾向的極簡寫法,仍有待完善,望討論。 github: github.com/li…

oracle 中累加函數,Oracle 分析函數分組累加!

用戶號碼 登陸時間13000000002010-01-0113000000012010-01-0113000000022010-01-0213000000012010-01-0213000000032010-01-0313000000022010-01-0313000000042010-01-0413000000032010-01-0413000000042010-01-0213000000062011-01-0413000000012011-01-04剔除重復登陸的用戶,…