没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Aop 框架演变过程
先看一张图
AOP 概念
1)相对于 OOP 面向对象概念,AOP 面向切面编程,是指为了将本身无法联系的两个类,通过某张方式将其联系起来
2)一般而言,我们管切入到指定类的指定方法的代码片段称为切面,而切入到哪些类,哪些方法则叫切入点。有了 AOP
我们就可以把几个类 共有的代码,抽取到一个切片中,等需要时在切入对象中去,从而改变其原有的功能。
3)静态 AOP: 在编译器切面直接以字节码的形式编译到目标字节码文件中称之为:
动态 AOP: 动态代理的类是动态生成的,而不是我们直接写成的,在运行期通过反射来增强目标对象功能
AspectJ 机制
属于静态 AOP 它是在编译时进行增强,会在编译时期将 AOP 逻辑织入到代码中,同时由于是在编译器织入,所以它的
优点时不影响运行时性能,缺点就是不够灵活。
切面语法:就是网上随便一搜的 AspectJ 使用方法,它把决定是否使用切面的权利还给了切面。就是说在写切面的时候就
可以决定哪些类的哪些方法会被代理,从而从逻辑上不需要侵入业务代码
织入工具。上面介绍的切面语法能够让切面从逻辑上与业务代码解耦,但是从操作上来讲,当 JVM 运行业务代码的时候,
他无从得知旁边还有个类想横插一刀。解决思路就是在编译期(或者类加载期)我们优先考虑一下切面代码,并将切面代码通过某
种形式插入到业务代码中,这样业务代码不就知道自己被“切”了么?这种思路的一个实现就是 aspectjweaver,就是这里的织入
工具。
AspectJ 语法简析
切点:切点表示对哪些方法进行拦截,拦截后怎么处理
切面:类是对物体特征的抽象,切面就是对横切关注点的抽象
连接点:JPoint 是程序的关键执行点,也是我们关注的重点。它是指被拦截到的点(如方法、字段、构造器等)
切入点:对 JoinPoint 进行拦截的定义,PointCut 的目的是提供一种方法使得开发者能够选择自己感兴趣的 JoinPoint
通知:切入点仅用于捕捉连接点集合,但是除了捕捉连接点集合外其他什么事情都没做,事实上实现横切行为我们需要使用
通知,它一般指拦截到 JoinPoint 后需要执行的代码,分为前置,后置,环绕三种类型。
使用 PointCut 对我们指定的连接点进行拦截,通过 Advice ,就可以拦截到 JoinPoint 后要执行的代码,Advice 通常有以下三
Commented [YH 余 1]: 这张图技术点
1:类加载机制
Commented [YH 余 2]: 文档先只总结静态 AOP 框架,
AspectJ 使用
Commented [YH 余 3]: AspectJ 两套机制,切面语法和
织入工具
织入工具的底层原理是 APT 技术 , APT 就是利用在编译
成字节码中,扫描 APT 注解,利用系统
AbstractProcessor 来对源字节码进行修改。
资源评论
FishAnd_Yu
- 粉丝: 359
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功