springboot+springcache+shiro+Redis整合时@Cacheable、@Transactional等注解失效的问题

问题描述:

1.springboot整合shiro之前@Cacheable、@Transactional等注解都可以正常使用;

2.整合了shiro之后,自定义MyShiroRealm中注入RoleUserService时 RolerUservice中的@Cacheable、@Transaction都失效了。

MyShiroRealm代码:

RoleUserService代码:

原因:shiro和cache在引用service实例顺序问题,shiro引入应在cache后,

shiro配置文件中引用realm属性bean中引用的service采用延迟加载策略。

解决方法:在MyShiroRealm注入RoleUserService时@Lazy注解(采用延迟加载策略)

MyShiroRealm改进后代码:



原文地址:https://www.cnblogs.com/binkai/p/9375102.html

时间: 2024-11-10 09:05:23

springboot+springcache+shiro+Redis整合时@Cacheable、@Transactional等注解失效的问题的相关文章

SpringBoot整合Shiro 涉及跨域和@Cacheable缓存/@Transactional事务注解失效问题(五)

1. 跨域(多出现在前后端分离项目中) (1) 跨域介绍可参考:跨域(CORS) (2) SpringBoot中解决跨域方式有: A. 使用@CrossOrigin注解: B. 实现Filter类,重写doFilter方法 package com.ruhuanxingyun.config; import cn.hutool.core.util.StrUtil; import org.springframework.context.annotation.Configuration; import

SpringBoot与Shiro的整合(单体式项目)

1.包结构 2.jar包,配置文件,类 2.1pom.xml文件配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht

Springboot2.x+shiro+redis整合填坑 (一)redis只做缓存的情况

主要记录关键和有坑的地方 前提: 1.SpringBoot+shiro已经集成完毕,如果没有集成,先查阅之前的Springboot2.0 集成shiro权限管理 2.redis已经安装完成 3.redis客户端使用Lettuce,这也是sprinboot2.0后默认的,与jedis的区别,自行百度 4.json使用springboot默认的 一.依赖 <dependency> <groupId>org.springframework.boot</groupId> <

springboot+shiro+redis(单机redis版)整合教程-续(添加动态角色权限控制)

相关教程: 1. springboot+shiro整合教程 2. springboot+shiro+redis(单机redis版)整合教程 3. springboot+shiro+redis(集群redis版)整合教程 参考此教程前请先阅读 2.springboot+shiro+redis(单机redis版)整合教程,此教程是在其基础上进行修改添加动态角色权限的. 本教程整合环境: java8 maven redis(单机) 开发工具: idea 版本: springboot 1.5.15.RE

SpringBoot项目+Shiro(权限框架)+Redis(缓存)集成

项目是SpringCloud框架,分布式项目,包括Eureka.Zuul.Config.User-Svr(用户管理的服务,既是服务端也是客户端): SpringCloud框架的SpringBoot 的项目搭建就不再赘述,这里重点介绍如何引入集成 Shiro 框架: Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 一.数据库设计

SpringBoot日记——Redis整合

上一篇文章,简单记录了一下缓存的使用方法,这篇文章将把我们熟悉的redis整合进来. 那么如何去整合呢?首先需要下载和安装,为了使用方便,也可以做环境变量的配置. 下载和安装的方法,之前有介绍,在docker中的使用,这里不做相关介绍,有想在windows环境下使用的,自己搜一下如何windows安装使用redis吧~(看这里也可以) 正题: SpringBoot对应(自带)RedisClient是不同的 SpringBoot1.5.x版本 -> jedis  SpringBoot2.x版本 -

SpringBoot(二十六)整合Redis之共享Session

集群现在越来越常见,当我们项目搭建了集群,就会产生session共享问题.因为session是保存在服务器上面的.那么解决这一问题,大致有三个方案,1.通过nginx的负载均衡其中一种ip绑定来实现(通过ip绑定服务器其中一台,就没有集群概念了):2.通过cookie备份session实现(因为cookie数据保存在客户端,不推荐;3.通过redis备份session实现(推荐); 学习本章节之前,建议依次阅读以下文章,更好的串联全文内容,如已掌握以下列出知识点,请跳过: SpringBoot(

SpringBoot与Shiro整合

修改pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <

SpringCloud+MyBatis+Redis整合—— 超详细实例(二)

2.SpringCloud+MyBatis+Redis redis是一种nosql数据库,以键值对<key,value>的形式存储数据,其速度相比于MySQL之类的数据库,相当于内存读写与硬盘读写的差别,所以常常用作缓存,用于少写多读的场景下,直接从缓存拿数据比从数据库(数据库要I/O操作)拿要快得多. 话不多说,接下来紧接上一章<SpringCloud+MyBatis+Redis整合-- 超详细实例(一)>搭建SpringCloud+MyBatis+Redis环境: 第一步:在p