笔记:
常用的切入点表达式
1. bean 用于匹配指定bean的所有方法执行
2.within 用于匹配指定包下的方法执行
3.execution 用于匹配具体的方法执行
4.@annotation 用于匹配指定注解修饰的方法执行
一、bean表达式
bean表达式一般应用于类级别,实现粗粒度的切入点定义:
bean(beanName) 指定一个beanName类中的所有方法
bean(*ServiceImpl) 指定所有后缀为ServiceImpl的类
二、within表达式
within表达式应用于类级别,实现粗粒度的切入点表达式定义:
within("某个类的全局限定名")和bean("beanName")一样的效果,作用于个类中的所有方法。
within(com.pro.*)作用与当前包下的所有类的业务。
within(com.pro..*) 作用与当前包以及子包的类的所有业务。
三、execution表达式
execution表达式应用于方法级别实现细粒度的切入点表达式定义:
execution(返回值类型 全局限定名.方法名()) 作用于具体的方法
execution(返回值类型 全局限定名.方法名(参数类型)) 作用于具体的方法,其中参数类型为该类型的方法。
execution(*.aop.service..*.*(..)) 作用与所有的aop.service包以及子包下的任意方法的任意参数
@annotation表达式
@annotation表达式应用与方法级别,实现细粒度的切入点表达式定义:
@annotation(anno.注解名) 作用与有此注解描述的方法
另外切面的优先级可以由@Order注解来实现
@Order(Number) 里面的Number越小,优先级越高。