Spring Boot 整合Shiro和Redis关于@Cacheble注解无效的解决方法

在我做项目的时候,在Spring Boot 中对Shiro和Redis进行了整合,但实际发现Spring boot中Shiro和Redis集成后,Spring的@cacheble注解无效。

出现的情况如下:

  1. 如果只是Spring boot和Redis集成,那么@cacheble可用,会把缓存数据写入Redis。
  2. 如果只是Spring boot和Shiro集成,然后用Spring cache抽象出cachemanager,作为Shiro的缓存。控制台未报错,Shiro的认证信息会存入Redis,但出现@cacheble注解无效,即@Cacheble注解的方法的返回值未存入Redis。如果果将Shiro的@Configuration注解去掉,即不用Shiro,@Cacheble可用。

解决方法如下:
Spring Boot 整合Shiro和Redis关于@Cacheble注解无效的解决方法_第1张图片

在自定义Realm中注入的Service声明中加入@Lazy注解即可解决问题。

感谢下面资料提供的帮助:
Spring boot中Shiro和Redis集成后,Spring的@cacheble注解无效?
Spring service with cacheable methods gets initialized without cache when autowired in Shiro realm

你可能感兴趣的:(Spring,Boot,Shiro,Redis)