一、涉及的注解
@Component-----放入spring容器-----类注解
@Aspect-----切面-----类注解
@Order(int)----指定切面的优先级,int值越小优先级越高-----类注解
@Before("excution(*.*(..))")-----前置通知---方法注解
@After(......)------后置通知---方法注解
@AfterReturning------方法正常结束后执行,可以访问返回值---方法注解
@AfterThrowing-----出异常会自动调用改方法---方法注解
@Around(......)-------环绕通知--------方法注解
二、切点表达式
①execution
execution的语法表达式如下:execution(<修饰符> <返回类型> <类路径> <方法名>(<参数列表>) <异常模式> )
其中,修饰符和异常是可选的,如果不加类路径,则默认对所有的类生效。它常用实例如下:
②通过方法名、返回值:
- `execution(public * *findname(..))`:定位于所有类下返回值任意、方法入参类型、数量任意,public类型的findname方法
- `execution(public String *findname(..))`:定位于所有类下返回值为String、方法入参类型、数量任意,public类型的findname方法
③通过类包:
- `execution(* com.montnets.controller.BaseController.*(..))`:匹配任意返回类型,对应包下BaseController类及其子类等任意方法。
- `execution(* com.*.(..))`:匹配任意返回类型,com包下所有类的所有方法
- `execution(* com..*.(..))`:匹配任意返回类型,com包、子包下所有类的所有方法
注意.表示该包下所有类,..则涵括其子包。
④ 通过方法入参
- 这里“