主要来源:http://howtodoinjava.com/spring/spring-aop/writing-spring-aop-aspectj-pointcut-expressions-with-examples/java
1. 方法标签匹配方式spring
假设定义了接口EmployeeManager接口。express
1)code
execution(* com.howtodoinjava.EmployeeManager.*( .. ))
以上切入点表达式能够匹配EmployeeManger接口中全部的方法。blog
2)继承
当切面方法和EmployeeManager接口在相同的包内,若是切入点表达式匹配全部全部方法,则表达式能够改为:接口
execution(* EmployeeManager.*( .. ))
3)匹配EmployeeManager接口的全部public方法。it
execution(public * EmployeeManager.*(..))
4) 匹配EmployeeManager接口中权限为public并返回类型为EmployeeDTO的全部方法。io
execution(public EmployeeDTO EmployeeManager.*(..))
5) 匹配EmployeeManager接口中权限为public并返回类型为EmployeeDTO,第一个参数为EmployeeDTO类型的全部方法。class
execution(publicEmployeeDTO EmployeeManager.*(EmployeeDTO, ..))
6) 匹配EmployeeManager接口中权限为public、返回类型为EmployeeDTO,参数明肯定义为EmployeeDTO,Integer的全部方法。
execution(public EmployeeDTO EmployeeManager.*(EmployeeDTO, Integer))
2. 类型标签匹配模式
1)匹配在com.howtodoinjava包下全部类型中全部的方法。
within(com.howtodoinjava.*)
2)匹配在com.howtodoinjava包以及其子包下全部类型中全部的方法。
within(com.howtodoinjava..*)
3)匹配其余包一个类下的全部方法。
within(com.howtodoinjava.EmployeeManagerImpl)
4)匹配同一个包下一个类下的全部方法。
within(EmployeeManagerImpl)
5)匹配一个接口下的全部继承者的全部方法。
within(EmployeeManagerImpl+)
3. bean名字匹配模式
匹配全部以Manager结尾的beans中的全部方法。
bean(*Manager)
4. 切入点表达式拼接
在AspectJ中,切入点表达式能够经过&&,||,!等操做符进行拼接。
bean(*Manager) || bean(*DAO)
上述这个例子表示匹配以Manager结尾或者以DAO结尾的beans中全部的方法。