戴着假發的程序員出品 抖音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.*.*(..))")