Java开发学习----AOP切入点表达式及五种通知类型解析

一、AOP切入点表达式对于AOP中切入点表达式,总共有三个大的方面,分别是 语法格式 、 通配符 和 书写技巧  。
1.1 语法格式首先我们先要明确两个概念:

  • 切入点:要进行增强的方法
  • 切入点表达式:要进行增强的方法的描述方式
对于切入点的描述,我们其实是有两种方式的,先来看下面的例子
Java开发学习----AOP切入点表达式及五种通知类型解析

文章插图
 
描述方式一:执行com.itheima.dao包下的BookDao接口中的无参数update方法
execution(void com.itheima.dao.BookDao.update())描述方式二:执行com.itheima.dao.impl包下的BookDaoImpl类中的无参数update方法
execution(void com.itheima.dao.impl.BookDaoImpl.update())因为调用接口方法的时候最终运行的还是其实现类的方法,所以上面两种描述方式都是可以的 。
对于切入点表达式的语法为:
  • 切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类/接口名.方法名(参数) 异常名)
对于这个格式,我们不需要硬记,通过一个例子,理解它:
execution(public User com.itheima.service.UserService.findById(int))
  • execution:动作关键字,描述切入点的行为动作,例如execution表示执行到指定切入点
  • public:访问修饰符,还可以是public,private等,可以省略
  • User:返回值,写返回值类型
  • com.itheima.service:包名,多级包使用点连接
  • UserService:类/接口名称
  • findById:方法名
  • int:参数,直接写参数的类型,多个类型用逗号隔开
  • 异常名:方法定义中抛出指定异常,可以省略
切入点表达式就是要找到需要增强的方法,所以它就是对一个具体方法的描述,但是方法的定义会有很多,所以如果每一个方法对应一个切入点表达式,想想这块就会觉得将来编写起来会比较麻烦,有没有更简单的方式呢?
就需要用到下面的通配符 。
1.2 通配符【Java开发学习----AOP切入点表达式及五种通知类型解析】我们使用通配符描述切入点,主要的目的就是简化之前的配置,具体都有哪些通配符可以使用?