AOP 总结
AOP即Aspect oriented Programing, 面向切面编程。
相关术语:
通知(Advice):
Advice defineds when to execute what action.
通知定义了切面要执行的内容以及在什么时候执行该内容。
Spring支持的5种通知类型:
- Before - org.springframework.aop.MethodBeforeAdvice
- After-returning - org.springframework.aop.AfterRetruningAdvice
- After-throwing - org.springframework.aop.ThrowsAdvice
- Arount - org.aopaliance.intercept.MethodInterceptor
- Introduction - org.springframework.aop.IntroductionInterceptor
连接点(JoinPoint):
The time to execute advice.
连接点指明了应用通知的时机,比如方法执行时,异常抛出时等。
切入点(PointCut):
Where to execute the action.
定义了在什么地方去执行织入的操作, 比如某个类名或者方法名。可以使用正则表达式表示。
切面(Aspect):
The advice and pointcut makes up the aspect to specify where and when to execute the action.
通知和切入点共同组成了切面,即为动作要执行的时间,内容和地点。
引入(Introduction):
Allows us to add new methods or properties to a class.
引入允许向现有的类添加新的方法和属性(Spring引入类方法注入的功能)
目标(Target):
The target got adviced. If there's no AOP, the target need to execute other kind of logics like recording log, transaction controlle, and with AOP, it can focus on its own business logic.
被通知的对象。不使用AOP的时候,目标的逻辑需要交叉其它的诸如日志记录,事务控制等事务逻辑,使用AOP的时候,则只需要关注自己的业务逻辑就可以了。
代理(Proxy):
The object to apply advice.
应用通知的对象。
织入(Weaving):
Apply the aspect to the target to generate the proxy.
把切面应用到目标对象来创建代理对象的过程,织入一般发生在如下几个时机:
- 编译时: 当一个类文件被编译时织入,需要特殊的编译器才能实现,比如AspectJ的编译器
- 类加载时: 当使用特殊的类加载器在目标被加载到虚拟机之前增强类的字节代码
- 运行时: 切面在运行的某个时刻被织入,SpringAOP就是以此种方式织入的,原理是是用了JDK的动态代理技术。
实现方式
- 基于代理
- 通过@AspectJ注解驱动
- 纯POJO切面
- 注入式AspectJ切面

AOP 总结的更多相关文章
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- .Net中的AOP系列之构建一个汽车租赁应用
返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...
- .NET里简易实现AOP
.NET里简易实现AOP 前言 在MVC的过滤器章节中对于过滤器的使用就是AOP的一个实现了吧,时常在工作学习中遇到AOP对于它的运用可以说是很熟练了,就是没想过如果自己来实现的话是怎么实现的,性子比 ...
- 在.Net中实现自己的简易AOP
RealProxy基本代理类 RealProxy类提供代理的基本功能.这个类中有一个GetTransparentProxy方法,此方法返回当前代理实例的透明代理.这是我们AOP实现的主要依赖. 新建一 ...
- 使用Java原生代理实现AOP
### 本文由博主柒.原创,转载请注明出处 ### 完整源码下载地址 [https://github.com/MatrixSeven/JavaAOP](https://github.com/Matri ...
- 【开源】.Net Aop(静态织入)框架 BSF.Aop
BSF.Aop .Net 免费开源,静态Aop织入(直接修改IL中间语言)框架,类似PostSharp(收费): 实现前后Aop切面和INotifyPropertyChanged注入方式. 开源地址: ...
随机推荐
- ansible-playbook权限提升多种方式
ansible-playbook 可以方便快速的批量执行部署和运维任务,对于不同的场景和服务器,需要使用不同的权限提升方式. 最佳实现:为了提高playbook的兼容性,跟功能没有直接关系的权限提升脚 ...
- csv文件——简单读操作01
转载:https://www.py.cn/spider/advanced/14381.html import csv with open('C:\\Users\\del\\Desktop\\123.c ...
- Physicoochemical|CG content|
NCBI存在的问题: 数据用户的增长 软件开发受限 数据分析缺乏 有些传统束缚,仅用底层语言书写 Pangenome Open gene是随菌株数量增大而增大的gene,Closed gene是随菌株 ...
- Linux(CENTOS7) Nginx安装
1.下载nginx 在disk目录下,输入以下命令进行下载: wget http://nginx.org/download/nginx-1.12.2.tar.gz 2.解压nginx 在disk目录 ...
- 视图家族之mixins视图工具类与generics工具视图类
视图家族之mixins视图工具类与generics工具视图类 一.mixins视图工具类 作用: 提供了几种后端视图(对数据资源进行曾删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通 ...
- 网页时不时打不开?试试阿里DNS 233.5.5.5 /233.6..6.6
最经上网都是用手机热点,但发现用谷歌浏览器时,时不时打不开网页.最后发现是DNS的问题,原来我的dns是8.8.8.8. 最后更改成阿里的DNS 233.5.5.5 /233.6..6.6,打开网页流 ...
- DVWA-目录遍历-文件包含
开门见山 · 目录遍历 替换成 2. 文件包含可以使用 绝对路径 也可以 3. 可以使用文件包含来包含一个网址,或者是一个shell 远程文件 空字符绕过字符过滤 %00
- Django知识点集合
- 题解 P2016 【战略游戏】
题目 解法跟 dalao @real_ljs 类似,但没有用到递归 [分析] 题目相当于需要求覆盖这颗树需要的最小点数 用 \(Dp_{i,0/1}\) 表示在这棵树中,以 \(i\) 为根节点的子树 ...
- 京东云数据库RDS SQL Server高可用概述
数据库的高可用是指在硬件.软件故障发生时,可以将业务从发生故障的数据库节点迁移至备用节点.本文主要讲述SQL Server高可用方案,以及京东云RDS数据库的高可用实现. 一.高可用解决方案总览 1. ...