SpringAOP 失效解决方案

SpringAOP是基于代理来对目标方法进行增强,但是有的时候又会出现“增强无效”的情况,比如在@Transactional下的某类中的方法内调用了该类的另一个方法,这种情况下,事务有时候会出现不生效的情况。因为,事务也是基于代理来增强目标对象的目标方法的,我们应该获取代理对象再来调用子方法。

获取代理对象的三个方法:

1. @Autowried 目标类注入进来,用这个注入进来的对象调用子方法即可。

2. 实现ApplicationContextAware接口或者@Autowried ApplicationContext对象,再通过getBean()来获取。

3. 通过SpringAOP的API来获取代理对象,这个方法的前提是在启动类上的@EnableAspectJAutoProxy的注解中加上属性exposeProxy = true;接下来通过API获取即可: AopContext.currentProxy() 即可获取当前类的目标代理对象,记得强转成当前类,然后调用你想调用的子方法即可。

SpringAOP 失效解决方案、Spring事务失效的更多相关文章

  1. java面试记录二:spring加载流程、springmvc请求流程、spring事务失效、synchronized和volatile、JMM和JVM模型、二分查找的实现、垃圾收集器、控制台顺序打印ABC的三种线程实现

    注:部分答案引用网络文章 简答题 1.Spring项目启动后的加载流程 (1)使用spring框架的web项目,在tomcat下,是根据web.xml来启动的.web.xml中负责配置启动spring ...

  2. Spring事务失效的原因

    http://blog.csdn.net/paincupid/article/details/51822599 Spring事务失效的原因 5种大的原因 如使用mysql且引擎是MyISAM,则事务会 ...

  3. Spring事务失效的2种情况

    使用默认的事务处理方式 因为在java的设计中,它认为不继承RuntimeException的异常是”checkException”或普通异常,如IOException,这些异常在java语法中是要求 ...

  4. 就这?Spring 事务失效场景及解决方案

    小明:靓仔,我最近遇到了很邪门的事. 靓仔:哦?说来听听. 小明:上次看了你的文章<就这?一篇文章让你读懂 Spring 事务>,对事务有了详细的了解,但是在项目中还是遇到了问题,明明加了 ...

  5. Spring事务失效的 8 大原因,这次可以吊打面试官了!

    今天再来一篇<吊打面试官>系列,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复:吊打,我会陆续更新--) 前几天栈长不是发了一篇文章,里面有一个关于事务失效的问题: 用 Spring ...

  6. spring事务失效情况分析

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt113 <!--[if !supportLists]-->一.&l ...

  7. Spring事务深入剖析--spring事务失效的原因

    之前我们讲的分布式事务的调用都是在一个service中的事务方法,去调用另外一个service中的业务方法, 如果在一个sevice中存在两个分布式事务方法,在一个seivice中两个事务方法相互嵌套 ...

  8. Spring 事务失效

    隔离级别 在 TransactionDefinition.java 接口中,定义了"四种"的隔离级别枚举: /** * [Spring 独有]使用后端数据库默认的隔离级别 * * ...

  9. 聊聊spring事务失效的12种场景,太坑了

    前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...

随机推荐

  1. vue的编译作用域

    其实就是在哪个实例中使用vue指令,他所在的作用域就在那个实例中 例如 当组件标签使用vue指令的时候,他所在的作用域就是vue实例对象的作用域,而当组件的 template中 标签使用vue指令的话 ...

  2. 非对称加解密 Asymmetric encryption 对称加密和非对称加密的区别

    考虑这样一个问题:一切的装备文件都存储在 Git 长途库房,RAR密码破解装备文件中的一些信息又是比较灵敏的.所以,我们需求对这些灵敏信息进行加密处理.首要的加密方法分为两种:一种是同享密钥加 密(对 ...

  3. RFC3918组播转发时延测试——网络测试仪实操

    一.简介 1.RFC3918简介 历史 · 在1999年3月成为正式标准 功能 · 评测网络互连设备或网络系统的性能 · 网络设备: 交换机,路由器- 内容 · 定义了一整套测试方法,为不同厂家的设备 ...

  4. 国产BI报表工具中低调的优秀“模范生”——思迈特软件Smartbi

    首先简单来介绍一下这位低调且优秀的模范生--思迈特软件Smartbi.思迈特Smartbi是企业级商业智能BI和大数据分析品牌,满足用户在企业级报表.数据可视化分析.自助分析平台.数据挖掘建模.AI智 ...

  5. C#如何在安全的上下文中使用不安全的代码?

    文章原文:https://www.cnblogs.com/2Yous/p/4887904.html 从通常情况下来看,为了保持类型安全,默认情况C# 不支持指针算法. 不过,当你需要使用指针的时候,请 ...

  6. 《Symfony 5全面开发》教程01、Symfony介绍

    大家好,我是伟伟权,你正在观看的是<Symfony5全面开发>视频教程. Symfony是一款优秀的PHP框架,我们到Symfony官网来查看一下Symfony的介绍.Symfony是一组 ...

  7. Excel:如何为某一列写相同的数而不是累加的数

    按住CTRL,双击单元格右下角的加号,则该行以下的行都是这个单元格的值 不按CTRL,双击单元格右下角的加号,该行以下的行都是每次加一的数

  8. 关于Xgboost的笔记

  9. 假如让你来设计SSL/TLS协议,你要怎么设计呢?

    摘要:本文将从设计者的视角介绍如何一步步设计出一个简易版的 SSL/TLS 的过程,在文章的最后,再简单介绍 TLS 1.2 版本的工作机制,以此帮助大家对 SSL/TLS 协议的基本原理有一个更深入 ...

  10. 字符串格式化String.Format

    //给变量赋值字符串00002 string s = String.Format( "{0:d5}", 2);