Spring AOP中@Pointcut的详细使用,整理好,以后工作用得到!!!

@Pointcut:表示定义的切面信息,从哪一层进行横切

  1. 属性:

execution: 用于匹配方法执行的连接点 within:用于匹配指定类型内的方法执行
this:用于匹配当前AOP代理对象类型的执行方法,注意:是AOP代理对象的类型匹配,这样可能会包括引入接口也进行匹配
target:用于匹配当前目标对象类型的执行方法,注意是目标对象的类型匹配,这样就不会包括引入的接口类型
args:用于匹配当前执行的方法传入的参数为指定类型的执行方法 @within:用于匹配所持有指定注解类型内的方法
@target:用于匹配当前目标对象类型的执行方法,其中目标对象持有指定注解
@args:用于匹配当前执行的方法传入的参数持有指定注解的执行
@annotation:用于匹配当前执行方法持有指定注解的方法

  1. 切面的配置:

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

  1. 括号中各个pattern分别表示:

修饰符匹配(modifier-pattern?)
返回值匹配(ret-type-pattern)可以为表示任何返回值,全路径的类名等
类路径匹配(declaring-type-pattern?) 方法名匹配(name-pattern)可以指定方法名 或者
代表所有, set 代表以set开头的所有方法 参数匹配((param-pattern))可以指定具体的参数类型,多个参数间用“,”隔开,各个参数也可以用“
”来表示匹配任意类型的参数,如(String)表示匹配一个String参数的方法;(,String)
表示匹配有两个参数的方法,第一个参数可以是任意类型,而第二个参数是String类型;可以用(…)表示零个或多个任意参数
异常类型匹配(throws-pattern?) 其中后面跟着“?”的是可选项 1)execution(
(…))
//表示匹配所有方法 2)execution(public * com.
savage.service.UserService.
(…))
//表示匹配com.savage.server.UserService中所有的公有方法 3)execution(*
com.savage.server….(…)) //表示匹配com.savage.server包及其子包下的所有方法
com.leadingsoft.learning.hy.service.impl

摘自自己工作的心得

你可能感兴趣的:(Spring框架)