wan*_*jie 5 aop spring spring-aop
在Spring in Action一书中,我发现了以下AspectJ点切割表达式:
@Pointcut("execution(** concert.Performance.perform(..))")
void performance();
Run Code Online (Sandbox Code Playgroud)
这将指定切入点性能,以包括名称为"perform"且返回类型可以为any的方法.但请注意,它使用两颗星(**)来匹配返回类型,正如我已经尝试过的,一颗星(*)可以完美地完成这项工作,这意味着以下行可以做同样的事情:
@Pointcut("execution(* concert.Performance.perform(..))")
void performance();
Run Code Online (Sandbox Code Playgroud)
我注意到许多AspectJ演示使用两颗星(**)来匹配"任何返回类型",所以有什么理由这样做吗?使用一颗星匹配"任何返回类型"有什么问题?
Spring 文档有助于更好地理解这一点 它说
Spring AOP用户可能最常使用执行切入点指示符.执行表达式的格式为:
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?)
Run Code Online (Sandbox Code Playgroud)
第一部分modifiers-pattern是可选的,因为你可以看到它有后缀?.这是指定方法的访问类型.
因此,在您的情况下,切入点表达式execution(** concert.Performance.perform(..))建议执行具有任何访问修饰符的concert.Performance方法perform以及具有任何参数类型的方法名称的类型的任何返回类型.
execution(* concert.Performance.perform(..))装置相同,其中第一*是可选的,它表示perform该类型方法concert.Performance接受任何类型的参数和方法可具有任何返回类型(带有可选的访问修饰符这意味着访问改性剂可以是任何东西).
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |