SpringAOP和AspectJ的关系

问题:之前对 SpringAOP和AspectJ的关系感到疑惑,因为曾经在书上看过SpringAOP集成了AspectJ,那么SpringAOP是直接使用了AspectJ吗?那么为什么又说SpringAOP是使用的JDK动态代理和Cglib?书上关于这一部分就没有细说了。于是查阅了官方文档后,得到了答案。

先贴一段官方的解释

@AspectJ refers to a style of declaring aspects as regular Java classes annotated with annotations. The @AspectJ style was introduced by the AspectJ project as part of the AspectJ 5 release. Spring interprets the same annotations as AspectJ 5, using a library supplied by AspectJ for pointcut parsing and matching. The AOP runtime is still pure Spring AOP though, and there is no dependency on the AspectJ compiler or weaver.

顺便翻译一下:当使用@AspectJ注解时,spring使用了 AspectJ库的注解并且使用 AspectJ库对切点表达式进行解析和匹配,但AOP运行时并不使用 AspectJ的编译器和织入,仍然是使用纯粹的springAOP实现。
从这一段可以看到Spring的确集成了AspectJ,但只是使用AspectJ库对切点表达式进行解析和匹配功能,代理部分仍然是使用的JDK动态代理和Cglib。这个解释为什么使用了@Transactional的方法再内部调用时,事务是不起作用的。因为springAop的代理是基于方法的,而内部调用方法并未被代理,被代理的是使用了@Transactional注解的方法。解决这个问题可以配置spring使用
AspectJ进行代理。

转载于:https://www.cnblogs.com/lanqi/p/9088153.html

SpringAOP和AspectJ相关推荐

  1. springAop和AspectJ的关系

    Aop是一种概念 springAop.AspectJ都是Aop的实现,SpringAop有自己的语法,但是语法复杂,所以SpringAop借助了AspectJ的注解,但是底层实现还是自己的 sprin ...

  2. SpringAOP的Aspectj方式*

    SpringAOP的Aspectj介绍 问题: 目前我们已经能够使用SpringAOP的SchemaBased方式来实现功能扩展.在使用SchemaBased方式实现功能扩展时,发现一个扩展代码就需要 ...

  3. SpringAop与AspectJ的联系与区别____比较分析 Spring AOP 和 AspectJ 之间的差别

    SpringAop与AspectJ的联系与区别 区别 AspectJ AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Ja ...

  4. Spring-AOP 使用@AspectJ

    概述 准备工作 实例 通过编码的方式使用AspectJ切面 通过配置的方式使用AspectJ切面 自动生成代理的方式 基于Schema的aop命名空间配置的方式 概述 我们之前一个系列的文章,分别使用 ...

  5. Spring-aop 基于Aspectj 表达式配置AOP

    基于Aspectj 表达式配置AOP(推荐使用) 基于配置文件 1.添加切面对象(aspect对象) 2.把切面对象交给spring 3.配置文件 <?xml version="1.0 ...

  6. springAOP编程-aspectJ开启注解自动代理

    Proxy-target-class默认值是false,代表的是如果目标是有接口的使用proxy代理,如果没有接口使用cglib. 如果将proxy-target-class=true,不管目标是否有 ...

  7. java 切面获取参数_每天分享一点Java知识(spring-aop)

    每天分享一点Java知识,码字不易,喜欢的可以关注一波,共同学习.20191127 本篇将详细讲解SpringAOP的概念以及如何实现. 1. 何为AOP AOP:面向切面编程,相对于OOP面向对象编 ...

  8. AOP各种表达式,aspectj的关系

    Aop是什么 与OOP对比,面向切面,传统的OOP开发中的代码逻辑是自上而下的,而这些过程会产生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不大,这些横切性问题不会影响到主逻辑实现的,但是会 ...

  9. SpringAOP学习--SpringAOP简介及原理

    前文对AOP做了介绍,实际项目中,一般不会直接上手手动实现aop,而是使用一些高级封装的aop实现,如SpringAOP. Spring是一个广泛应用的框架,SpringAOP则是Spring提供的一 ...

最新文章

  1. Grid Infrastructure 的较好的例子
  2. 简单哈弗曼树(Java)
  3. 反垃圾邮件,需要全面了解各种方案
  4. shell学习(12)- jq
  5. PHP实现多文件上传
  6. SQL高手篇:精典SQL FAQ收藏
  7. vi 编辑器基本命令
  8. 在线思维导图工具-toolfk程序员在线工具网
  9. o蓝屏之死---stop:0X000000c5(0x000000c4等系列)---Mr.Zhang
  10. 电子沙盘技术和android,ERP沙盘与电子沙盘的区别
  11. Postman测试post接口
  12. 【ACM-ICPC 2018 北京赛区网络预赛】B题Tomb Raider ---- 状态压缩+思维★
  13. 保护域及安全域的概念:受保护的资源所在的区域
  14. 关于PScs6无法拖入图片的解决
  15. 基于物联网的智能厨房安全监测系统-上位机程序
  16. php网页显示中文乱码的解决办法!
  17. 多媒体 || GIF压缩与JPEG压缩的对比
  18. 游戏一直被攻击掉线卡顿是什么原因?服务器被攻击怎么办?
  19. Hadoop-HDFS详解与HA,完全分布式集群搭建(细到令人发指的教程)
  20. 【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS

热门文章

  1. asp 检测更改后缀的图片_微信不能发送25M以上视频?一键修改后缀名,就能立马发送...
  2. 保存最大的前20项暴力--Heritage of skywalkert
  3. 计算机网络—PPP协议和HDLC协议
  4. 九大类背包问题专题1---01背包问题(二维和优化一维法附代码)
  5. 2013蓝桥杯C++B:翻硬币(找规律和getline())
  6. bzoj 3372: [Usaco2004 Feb]Moo University -- Financial Aid 财政补助(set+贪心)
  7. bzoj 1113: [Poi2008]海报PLA(栈)
  8. Pytorch生成Tensor常用方法汇总
  9. opencv 利用轮廓检索函数实现字母匹配(图像匹配)
  10. 从零开始实现霍夫变换检测图像直线算法 python