AOP 面向切面编程 笔记

AOP 面向切面编程 笔记

基础概念

1.什么叫AOP

AOP即面向切面编程,是OOP编程思想的一种延续。利用AOP,我们可以对业务逻辑的各个模块进行隔离,从而使得业务逻辑的各个模块进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可充用性,同时提高开发的效率。利用AOP,我们可以在无侵入状态下在宿主中插入一些代码。
常见的应用场景,比如日志埋点、性能监控、动态权限控制、代码调试等。

2.基础术语

  • Advice 增强

    也叫“通知”。增强是织入到目标类连接点上的一段程序代码。结合执行点方位信息和切点信息,我们就可以找到特定的连接点。

  • JoinPoint 连接点

即程序执行的某个特定位置,如类开始初始化前、类初始化后、类中某个方法调用前、调用后、方法执行抛出异常后等。一个类或一段程序代码拥有一些具有边界性质的特定点,这些点中的特定点就成为“连接点”。连接点由两个信息确定:一是用方法表示的程序执行点;二是用相对点表示的方位。

  • PointCut: 切点

也叫“切入点”。每个程序类都拥有多个连接点,如一个拥有两个方法的类,这两个方法都是连接点,即连接点是程序类中客观存在的事物。AOP通过“切点”来定位特定的连接点。连接点相当于数据库中的记录,而切点相当于查询条件。切点和连接点是一对多的关系。连接点是方法执行前、执行后等包括方位信息的具体程序执行点,而切点只定位到某个方法上,所以如果希望定位到具体连接点上,还需要提供方位信息。

  • Aspect 切面

切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义,它将切面所定义的横切逻辑织入到切面所制定的连接点中。

  • Weaving 织入

织入是将增强添加到目标类具体连接点上的过程。根据不同的实现技术,AOP有三种不同的织入方式
1.编译期织入,这要求使用特殊的java编译器;
2.类装载期织入,这要求使用特殊的类装载器;
3.动态代理织入,在运行期为目标类添加增强生成子类的方式。

  • Target 目标对象
    增强逻辑的织入目标类。如果没有AOP,目标业务类需要自己实现所有的逻辑,而在AOP的帮助下,目标业务类只实现哪些非横切逻辑的程序逻辑,而性能监控和事务管理等横切逻辑则可以使用AOP动态织入到特定的连接点上。

AspectJ

Aspectj官方文档

上述主要讲了AOP的整体概念,理解起来还是相对晦涩的,接下来需要从实际的例子来结合起来看下。AspectJ实际上是对AOP编程思想的实现,它能够和java配合起来使用。下文将主要介绍下AspectJ是如何具体运用,他又是如何将AOP思想给体现出来的。

AspectJ注解

  • @Aspect

该注解用来描述一个切面类。
定义切面类的时候需要加上这个注解,标明当前类是切面类。

  • @PointCut 切点表达式

  • @Before

  • @After

  • @Around

  • @AfterReturning

  • @AfterThrowing

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值