The most typical pointcut expressions are used to match a number of methods by their signatures. A common method based pointcut expression is something like
PCD(<method scope> <return type> <fully qualified class name>.*(arguments))
- PCD - PCD is pointcut designators. Spring AOP supports following pointcut expression -
-- execution, with, this,target, args
--Spring AOP also supports an addition PCD - "bean"
--Of these, execution is most common - method scope: Advice will be applied to all the methods having this scope. For e.g., public, private, etc. Please note that Spring AOP only supports advising public methods.
- return type: Advice will be applied to all the methods having this return type.
- fully qualified class name: Advice will be applied to all the methods of this type. If the class and advice are in the same package then package name is not required
- arguments: You can also filter the method names based on the types. Two dots(..) means any number and type of parameters.
Also these expressions can be chained to create composite pointcuts : && (and), || (or) , ! (not)
Some examples
the execution of any public method:
execution(public * *(..))
the execution of any method with a name beginning with “set”:
execution(* set*(..))
the execution of any method defined by the MyService interface
execution(* com.xyz.service.MyService.*(..))
the execution of any method defined in the service package:execution(* com.xyz.service.*.*(..))
the execution of any method defined in the service package or a sub-package:execution(* com.xyz.service..*.*(..))
any join point (method execution only in Spring AOP) WITHIN the service package:within(com.xyz.service.*)
any join point (method execution only in Spring AOP) within the service package or a sub-package:within(com.xyz.service..*)
any join point (method execution only in Spring AOP) where the proxy implements the AccountService interface:this(com.xyz.service.AccountService)
any join point (method execution only in Spring AOP) where the target object implements the AccountService interface:target(com.xyz.service.AccountService)
any join point (method execution only in Spring AOP) which takes a single parameter, and where the argument passed at runtime is Serializable:args(java.io.Serializable)
No comments:
Post a Comment