戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注
[查看视频教程]
上一章我们讲解@Pointcut的含义和用法,这一章我将详细讲解和罗列spring中的@Pointcut中表达式的写法。
Spring AOP 支持以下 AspectJ 切入点指示符(PCD)用于切入点表达式:
用于匹配方法执行连接点。这是使用 Spring AOP 时使用的主要切入点指示符。这种方式是我们最常用的方式,是通过类似于正则表达式的方式实现pointcut的配置。
*表示通配符, 方法中没有参数就表示匹配没有参数的方法saveBook() ,一个点就表示匹配有一个参数的方法saveBook(.),方法中两个点表示匹配任意参数的方法saveBook(..)。 方法中saveBook(.,String) 表示匹配第一个任意参数,第二个是String类型参数的方法。
我们来看spring官方给出的案例:
执行任何公共方法:
执行任何公共方法:
execution(public * *(..))
执行 name 以set开头的任何方法:
execution(* set*(..))
执行AccountService接口定义的任何方法:
execution(* com.st.dk.service.AccountService.*(..))
执行service包中定义的任何方法:
execution(* com.st.dk.service.*.*(..))
执行service包中定义的任何方法或其中一个 sub-packages:
execution(* com.st.dk.service..*.*(..))
比如我们上一章中的案例可以修改为:
@Pointcut("execution(* com.st.dk.demo7.service.BookService.*.*(..))")