动力节点Spring框架学习笔记-王鹤(二)AOP面向切面编程

二、AOP面向切面编程

官方下载地址

动力节点spring资料

视频观看地址

https://www.bilibili.com/video/BV1nz4y1d7uy

2.1 概述

AOP(Aspect Orient Programming)。面向切面编程是从动态角度考虑程序运行过程

  • AOP 底层,就是采用动态代理模式实现的。采用了两种代理:JDK 的动态代理,与 CGLIB的动态代理,AOP就是动态代理的规范化, 把动态代理的实现步骤,方式都定义好了, 让开发人员用一种统一的方式,使用动态代理
  • Aspect: 切面,给你的目标类增加的功能,就是切面。 像上面用的日志,事务都是切面。切面的特点:一般都是非业务方法,独立使用的
  • Orient:面向, 对着
  • Programming:编程

2.2 相关术语

1. Aspect:切面,表示增强的功能, 就是一堆代码,完成某个一个功能。非业务功能,常见的切面功能有日志, 事务, 统计信息, 参数检查, 权限验证,切面用于组织多个Advice,Advice放在切面中定义,实际就是对主业务逻辑的一种增强

2. JoinPoint:连接点 ,连接业务方法和切面的位置。就某类中的业务方法,程序执行过程中明确的点,如方法的调用,或者异常的抛出。在Spring AOP中,连接点总是方法的调用

3. Pointcut:切入点 ,指多个连接点方法的集合。多个方法。可以插入增强处理的连接点。简而言之,当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点

4. Advice:AOP框架在特定的切入点执行的增强处理。处理有"around"、"before"和"after"等类型,能表示切面功能执行的时间,切入点定义切入的位置,通知定义切入的时间

5. Target:目标对象,目 标 对 象 指 将 要 被 增 强 的 对 象 。 即 包 含 主 业 务 逻 辑 的 类 的 对 象

2.3 AspectJ

2.3.1 概述

AspectJ是一个基于Java语言的AOP框架,提供了强大的AOP功能,其主要包括两个部分:

  • 一个部分定义了如何表达、定义AOP编程中的语法规范;
  • 另一个部分是工具部分,包括编译、调试工具等

aspectJ框架实现aop的两种方式:

  1. 使用xml的配置文件 : 配置全局事务
  2. 使用注解,我们在项目中要做aop功能,一般都使用注解,aspectj有5个注解
  • @Before
  • @AfterReturning
  • @Around
  • @AfterThrowing
  • @After

2.3.2 AspectJ的切入点表达式

表达式原型:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)

相关解释:

  • modifiers-pattern? 访问权限类型
  • ret-type-pattern 返回值类型
  • declaring-type-pattern? 包名类名
  • name-pattern(param-pattern) 方法名(参数类型和参数个数)
  • throws-pattern 抛出异常类型
  • ?表示可选的部分

以上表达式一共4个部分

execution(访问权限 方法返回值 方法声明(参数) 异常类型)

符号 意义
* 0至多个任意字符
. . 用在方法参数中,表示任意多个参数;用在包名后,表示当前包与子包路径
+ 用在类名后,表示当前类及其子类;用在接口后,表示当前接口及其实现类

相关实例:

  • execution(public * *(..)):任意公共方法
  • execution(* set*(..)):任何一个以“set”开始的方法
  • e
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值