一、AOP切入点表达式对于AOP中切入点表达式,总共有三个大的方面,分别是 语法格式 、 通配符 和 书写技巧 。
1.1 语法格式首先我们先要明确两个概念:
- 切入点:要进行增强的方法
- 切入点表达式:要进行增强的方法的描述方式
文章插图
描述方式一:执行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切入点表达式及五种通知类型解析】我们使用通配符描述切入点,主要的目的就是简化之前的配置,具体都有哪些通配符可以使用?
- * :单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现
- execution(public * com.itheima.*.UserService.find*(*))
- 匹配com.itheima包下的任意包中的UserService类或接口中所有find开头的带有一个参数的方法
- .. :多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写
- execution(public User com..UserService.findById(..))
- 匹配com包下的任意包中的UserService类或接口中所有名称为findById的方法
- + :专用于匹配子类类型
- execution(* *..
推荐阅读
- 架构师之RX响应式编程——RxJava2.0操作符原理
- 解析服务型智能机器人的学习方法论
- 深度解析Java静态代理与动态代理模式的实现
- 高级Web应用开发前沿技术简述
- AI人工智能学习流程
- 学习室内设计需要掌握哪些专业技能 室内设计要学哪些
- EA|传EA开发《黑豹》单机游戏
- 读后感写作方法 应用文写作学习总结
- 九个有效的学习方法 学习方法有哪些
- 改善Java代码的八个建议