日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

八年开发程序员浅析SpringBoot 之 Shiro 与 Redis 多级缓存问题

發布時間:2025/3/8 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八年开发程序员浅析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

總結

以上是生活随笔為你收集整理的八年开发程序员浅析SpringBoot 之 Shiro 与 Redis 多级缓存问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。