资讯专栏INFORMATION COLUMN

Spring AOP 源码初窥(一) 概念

CarterLi / 1366人阅读

摘要:而面向切面编程理所当然关注于切面,那么什么是切面可以理解为程序执行时的某个节点,或更具体一点,在某个方法执行之前,执行之后,返回之后等其它节点。术语一个切面,可以理解为一个切面模块,将相关的增强内容写进同一个切面。例如一个负责日志的切面。

AOP是什么

AOP全称 Aspect-Oriented Programming 即面向切面编程。怎么样,是不是感觉很熟悉?对,类似的还有面向过程编程(Procedure-Oriented Programming),面向对象编程(Object-Oriented Programming)。如果对后面两种编程方式有一定的了解,那么对于AOP想必也就比较容易理解了。

就像面向对象编程,关注点在于对象,即。而面向切面编程理所当然关注于切面,那么什么是切面?可以理解为程序执行时的某个节点,或更具体一点,在某个方法执行之前执行之后返回之后等其它节点。

几个概念的区别 1. AspectJ

AspectJ是一个基于Java语言的AOP框架,它采用编译时增强,会将增强目标编译得到一个新的AOP代理类。

2. Spring AOP

Spring提供的AOP框架,使用了和AspectJ一样的注解,但是通过动态生成代理类的方式生成AOP代理类。

3. JDK Dynamic AOP

Spring AOP中AOP代理的一种实现,使用原生JDK反射和动态代理生成AOP代理,需要代理类与目标实现相同的接口。

4. CGLib AOP

Spring AOP中AOP代理的另一种实现,使用CGLib动态生成AOP代理类,需要代理类为目标类的子类。

AOP术语 1. Aspect

一个切面,可以理解为一个切面模块,将相关的增强内容写进同一个切面。例如:一个负责日志的切面。

2. Join Point

代表可以由AOP增强织入的程序执行节点。

3. Advice

所要做的增强处理

4. Pointcut

切入点,定义了将被Advice增强的一个或多个Join Point,可以使用正则表达式或模式匹配。

5. Target object

被增强的目标对象

Adivce的种类 1. Before

方法执行之前

2. After

方法执行之后

3. After-returning

方法成功执行完成之后

4. After-throwing

方法抛出异常之后

5. Around

环绕方法执行的整个周期

参考链接

Spring AOP 实现原理与 CGLIB 应用

AOP with Spring Framework

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

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

相关文章

  • Spring AOP 源码初窥(二) 从注解开始

    摘要:版本从注解开始由于在本人实际应用中使用的是注解配置,也更倾向于了解的整个实现,而不仅仅是关键实现。于是本篇源码解析,将会从注解开始。那么,便从的源码引用开始吧。的引用先从源码中找有引用到,用来判断是否有该注解的代码。 版本 spring 5.0.8.BUILD-SNAPSHOT aspectjweaver 1.8.13 从注解开始 由于在本人实际应用中使用的是注解配置AOP,也更倾...

    Amio 评论0 收藏0
  • Spring AOP 源码初窥(三)扫描Advice与Bean匹配

    摘要:版本如何扫描接上一回,讲到了方法,该方法的目的是获取并生成。其中英文为源码注释。那么,以上便是通过扫描配置并生成的过程了。一些总结读到这儿,如何扫描配置,生成类,并匹配对应的整个流程已经很清楚了。 版本 spring 5.0.8.BUILD-SNAPSHOT aspectjweaver 1.8.13 如何扫描Advice 接上一回,讲到了getAdvicesAndAdvisorsF...

    oysun 评论0 收藏0
  • 后台开发常问面试题集锦(问题搬运工,附链接)

    摘要:基础问题的的性能及原理之区别详解备忘笔记深入理解流水线抽象关键字修饰符知识点总结必看篇中的关键字解析回调机制解读抽象类与三大特征时间和时间戳的相互转换为什么要使用内部类对象锁和类锁的区别,,优缺点及比较提高篇八详解内部类单例模式和 Java基础问题 String的+的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水...

    spacewander 评论0 收藏0
  • 后台开发常问面试题集锦(问题搬运工,附链接)

    摘要:基础问题的的性能及原理之区别详解备忘笔记深入理解流水线抽象关键字修饰符知识点总结必看篇中的关键字解析回调机制解读抽象类与三大特征时间和时间戳的相互转换为什么要使用内部类对象锁和类锁的区别,,优缺点及比较提高篇八详解内部类单例模式和 Java基础问题 String的+的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水...

    xfee 评论0 收藏0

发表评论

0条评论

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