为了过滤方法以便将通知应用于Spring Bean,Spring AOP提供了各种匹配表达式。这些表达式通常也被称为切入点指示符
1.类型签名表达式
根据类型(比如接口、类名或者包名)过滤方法,Spring AOP提供了within关键字。
语法:within(<type name>);
示例:
- Within(com.xxx.xxx...*):该通知匹配该包及其子包下的所有的方法
- Within(com.xxx.xxx.MyService):匹配MyService类中的所有的方法
- Within(MyServiceInterface+)实现了该接口下的实现类的所有方法
- Within(com.xxx.xxx.MyService+):实现了该类及其子类的所有方法
2.方法签名表达式
根据方法来进行过滤。
语法:execution(......);
- execution(*com.xxx.xxx.Beans.*(..)):Beans中的所有的方法
- Execution(public *com.xx.xx.Beans.*(..)):匹配所有的公共方法
- Execution(public int com.xx.xx.Beans.*(..)):匹配所有的公共方法并且返回值为int
- Execution(public int com.xx.xx.Beans.*(int,..)):匹配所有的公共方法并且返回值为int并且第一个参数为int
通配符 | 说明 |
.. | 任意数量的参数 |
* | 任意数量的字符和任意数量的包 |
+ | 给定类的任意子类 |