前言

来自不愿意透露姓名的小师弟的投稿。这篇主要讲了,项目中配置了多缓存遇到的坑,以及解决办法。

发现问题

在一次项目实践中有实现多级缓存其中有已经包括了 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 多级缓存问题相关推荐

  1. 记录SpringBoot集成Shiro使用Redis作缓存遇到的一个问题(Key-Value)互换

    在实现Shrio Cache的实现类中 public class RedisCache<K,V> implements Cache<K,V> {private static L ...

  2. 测试/开发程序员喜欢跳槽?跳了就能涨工资吗?

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  3. 测试/开发程序员值这么多钱么?“我“不会愿赌服输......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  4. 给初入测试/开发程序员的几点建议,把困难当做猎物......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  5. 工作八年的程序员,却拿着毕业三年的工资,再不开窍就真晚了...

    小韩是一家小公司的软件程序员,而八年后他还在那家公司,依然是一名普通的程序员.算起来,他工作也有八年了,但是,他却告诉我,他的工资已经好几年没有涨过了. 工作八年的程序员,却拿着毕业三年的工资 小韩如 ...

  6. 成为测试/开发程序员,小张:现实就来了个下马威......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  7. 测试/开发程序员的成长之路,未来是你们的......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  8. 测试/开发程序员幽默的 “自嘲“?印象流派......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  9. 精英VS普通测试开发程序员?截然不同......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

最新文章

  1. Search Help技术
  2. Android之单复选框及Spinner实现二级联动
  3. C#比较运算符及解析
  4. Apache JMeter 菜单说明
  5. matlab 复合辛普森公式,复合梯形和复合辛普森MATLAB程序.doc
  6. 一个实例带你搞懂Apriori关联分析算法
  7. Grafana WebHook 报警通知踩坑系列,支持报警截图发钉钉卡片报警!!!
  8. emmx用xmind打开_XMind: ZEN 2020 正式更名 XMind 2020!新名字,新招式。
  9. Win7matlab7.0安装教程,Win7下MATLAB7.0安装教程
  10. Unity 制作RPG小地图
  11. 2017-07-12(数据库)
  12. Access导入SQL2005
  13. Mastik:微体系结构侧信道攻击工具包
  14. 思科网络安全 第四章测验答案
  15. tf.train.exponential_decay的用法
  16. JVM内存模型篇【JVM内存模型】
  17. 使用linux 中的 tree 指定显示深度,显示文件目录结构
  18. 找工作再也不愁之面试题全覆盖-Java基础篇
  19. vue-cli5脚手架搭建项目过程详解 -vue组件单元测试
  20. 在Linux系统中实现一个可加载的内核模块

热门文章

  1. 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
  2. 支付宝 android 2.3,app被拒记录-2.3-包含支付宝
  3. c语言期末考试复习题
  4. spark更改分区_用于小文件的spark重新分区数据
  5. java蓝桥杯dfs_第七届 蓝桥杯决赛 Java B组 打靶 解题报告(DFS,回溯,全排列)-Go语言中文社区...
  6. flash as3与后台php交互用户注册例子,as3与PHP后台交互2
  7. linux es数据库 head,elasticsearch安装es-sql插件
  8. ios kvo 要引入_腾讯社招iOS面试记录
  9. 汉仪尚巍手书有版权吗_为什么“汉仪尚巍手书”会大行天下?
  10. python dicom图像分割_python读取DICOM头文件的实例