Spring AOP中定义切点的详细介绍

AOP的切点定义大部分的人都知道excecution()其实在AOP中有很多关旭切点的参数,用好可这些参数可以让我们的工作事半功倍,

一.excecution()

关于excecution必须要介绍的就是怎么写这个括号里面的内容了.

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)

这是他的表达式内容 

modifiers-pattern? 表示的是修饰符 其中?代表可以省略
ret-type-pattern 方法的返回参数	
declaring-type-pattern? 表示方法所在的类的访问路径
name-pattern(param-pattern) :表示的是方法名
throws-pattern? : 表示的是异常
二.bean()

Bean的使用相对来说是比较简单的 bean()括号里面放的是你在Spring中注册的类的标识也就是当我们使用@Component@Service@Controller@Respository中的value的值

三.within()

within()但是within()和execution()函数不同的是,within()所指定的连接点最小范围只能是类,而execution()所指定的连接点可以大到包,小到方法入参。 所以从某种意义上讲,execution()函数功能涵盖了within()函数的功能

注意.当括号里面的是一个接口的时候他会去拦截实现了该接口的所有类.

四.@within和@target

@within()和@target()括号里面可以放注解的全类名指定实现该注解的类进行拦截

五.@args

@args()括号里面也放注解只不过它是对方法参数有该注解的进行拦截

六.args()

agrs()括号里面放方法的参数类型

七.在切点表达式中还可以使用&& || !这三种符号用来完成对切点的定义

excecution(* *.*(..))  || bean('deviceService')
在设置通知的时候也是可以利用 && || 设置多个切点的

@Pointcut("@within(cn.gouliao.ares.annotation.controller.ControllerAround)")
 public void setJoinPoint() {
 }
 @Pointcut("@annotation(cn.gouliao.ares.annotation.controller.ControllerAround)")
 public void setPoint(){

 }

 @Around(value = "setJoinPoint()||setPoint()")

 
  

你可能感兴趣的:(AOP)