资讯专栏INFORMATION COLUMN

SpringBoot 填坑 | Shiro 与 Redis 多级缓存问题

gplane / 2475人阅读

摘要:发现问题在一次项目实践中有实现多级缓存其中有已经包括了的,本以为开启的缓存是一件很简单的事情只需要在启动类上加上注解就会启动缓存管理了,但是问题出现了。

微信公众号:一个优秀的废人。如有问题,请后台留言,反正我也不会听。

前言

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

发现问题

在一次项目实践中有实现多级缓存其中有已经包括了 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 的报错日志中查找问题所在是非常有用的,大部分的错误,日志都会给你反馈。

如果本文对你哪怕有一丁点帮助,请帮忙点好看。你的好看是我坚持写作的动力。

另外,关注之后在发送 1024 可领取免费学习资料。

资料详情请看这篇旧文:Python、C++、Java、Linux、Go、前端、算法资料分享

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/62073.html

相关文章

  • SpringBoot 填坑 | Shiro Redis 多级缓存问题

    摘要:发现问题在一次项目实践中有实现多级缓存其中有已经包括了的,本以为开启的缓存是一件很简单的事情只需要在启动类上加上注解就会启动缓存管理了,但是问题出现了。 微信公众号:一个优秀的废人。如有问题,请后台留言,反正我也不会听。 showImg(https://segmentfault.com/img/remote/1460000018524912); 前言 来自不愿意透露姓名的小师弟的投稿。...

    Airy 评论0 收藏0
  • SpringBoot 填坑 | Shiro Redis 多级缓存问题

    摘要:发现问题在一次项目实践中有实现多级缓存其中有已经包括了的,本以为开启的缓存是一件很简单的事情只需要在启动类上加上注解就会启动缓存管理了,但是问题出现了。 微信公众号:一个优秀的废人。如有问题,请后台留言,反正我也不会听。 showImg(https://segmentfault.com/img/remote/1460000018524912); 前言 来自不愿意透露姓名的小师弟的投稿。...

    bawn 评论0 收藏0
  • springmvc项目转为springboot

    摘要:说明如果你的项目连项目都不是,请自行转为项目,在按照本教程进行。本教程适用于的项目。处理拦截资源文件问题。 说明 如果你的项目连maven项目都不是,请自行转为maven项目,在按照本教程进行。本教程适用于spring+springmvc+mybatis+shiro的maven项目。1.修改pom文件依赖 删除之前的spring依赖,添加springboot依赖 or...

    wqj97 评论0 收藏0
  • springboot+shiro 整合基本应用

    摘要:用户只有授权后才允许访问相应的资源。权限安全策略中的原子授权单位,通过权限我们可以表示在应用中用户有没有操作某个资源的权力。 简介 Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小...

    wthee 评论0 收藏0
  • 两年了,我写了这些干货!

    摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...

    宋华 评论0 收藏0

发表评论

0条评论

gplane

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<