spring boot切面execution表达式添加多个包路径

问题描述

在Spring Boot中,如果你想为多个包中的方法创建一个切面,你可以在@Pointcut注解中使用||操作符来指定多个包。


解决方案:

// 定义切入点为两个包中的任意方法
@Pointcut("execution(* com.example.package1..*.*(..)) || execution(* com.example.package2..*.*(..))")
public void myPointcut() {
}

排除某个接口

// 定义切点,包括所有接口的方法,除了login接口
@Pointcut("execution(* com.example.package1..*.*(..)) && !execution(* com.example.controller.testController.login(..))")
public void myPointcut() {
}

整个表达式可以分为五个部分:

  1. execution(): 表达式主体,可以扫描控制层的接口、某个注解、或者其他需要扫描的类。
  2. 第一个*号:表示返回类型,*号表示所有的类型,比如public,protect,private等。
  3. 包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.demo.service.impl包、子孙包下所有类的方法。
  4. 第二个*号:表示子包名,*号表示所有子包。
  5. 第三个*号:表示类名,*号表示所有子包下的类。
  6. *(..):最后这个星号表示方法名,*号表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数。

相关推荐

  1. spring boot切面execution表达式添加路径

    2024-03-22 16:52:04       20 阅读
  2. Spring AOP相关注解与execution 切点表达式概述

    2024-03-22 16:52:04       13 阅读
  3. Python 正则表达式:深入解析匹配模式

    2024-03-22 16:52:04       8 阅读

最近更新

  1. python class

    2024-03-22 16:52:04       0 阅读
  2. 10.pwn ROP(栈溢出攻击的核心)

    2024-03-22 16:52:04       0 阅读
  3. sklearn基础教程

    2024-03-22 16:52:04       0 阅读
  4. 跨境支付新篇章:引领电商潮流

    2024-03-22 16:52:04       0 阅读
  5. CSS学习

    2024-03-22 16:52:04       1 阅读

热门阅读

  1. Mysql迁移至达梦所遇问题汇总

    2024-03-22 16:52:04       18 阅读
  2. 【React】React组件的导入与导出

    2024-03-22 16:52:04       22 阅读
  3. [Qt学习笔记]Qt线程间数据通讯及数据共享

    2024-03-22 16:52:04       21 阅读
  4. 多线程(3)线程基本状态

    2024-03-22 16:52:04       22 阅读
  5. c++算法学习笔记 (16) 约数

    2024-03-22 16:52:04       20 阅读
  6. AI大模型学习:挑战与机遇

    2024-03-22 16:52:04       23 阅读
  7. Ubuntu自启GUI程序

    2024-03-22 16:52:04       19 阅读
  8. 2024届 C++ 刷题 笔试强训 Day 04

    2024-03-22 16:52:04       19 阅读
  9. websocket 升级协议时的协议切换点

    2024-03-22 16:52:04       21 阅读