博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring AOP 源码初窥(一) 概念
阅读量:5795 次
发布时间:2019-06-18

本文共 900 字,大约阅读时间需要 3 分钟。

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

环绕方法执行的整个周期

参考链接

转载地址:http://babfx.baihongyu.com/

你可能感兴趣的文章
递推练习 简单n!
查看>>
spring项目启动错误——java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext...
查看>>
Android中解析XML
查看>>
关于 visual studio 扩展与更新 搜索不到qt的解决方案
查看>>
iOS开发网络篇—GET请求和POST请求
查看>>
字典dict
查看>>
游戏名词解释
查看>>
mongodb数据的导出和导入
查看>>
白话算法(7) 生成全排列的几种思路(二) 康托展开
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
SQL server中 常用系统函数 可以学习下
查看>>
剑指offer---06---数组,二分法---旋转数组的最小数字
查看>>
Valid Parentheses
查看>>
【ES6】数值的扩展
查看>>
远程桌面开启(命名空间)
查看>>
Mongoose的分页功能
查看>>
Compare Version Numbers
查看>>
微信小程序多列选择器
查看>>
性能测试之稳定性测试
查看>>