關於基於Annotation的Advice

基於Annotation與基於XmlSchema的AOP實際上是對代理過程的一個簡化。 須要引包:asm-X.jar,asm-commons-X.jar,aspectjweaver.jar。 基於Annotation能夠有3中聲明方式: 一、將Pointcut單獨聲明在一個類文件中。 Pointcut的聲明形式以下: @Pointcut("execution(* com.YH.類型名.*(..))")//pointcut的定義 public void point(){}//pointcut的簽名 若是pointcut不少時,能夠將若干個上面的pointcut單獨的放在一個特定的類文件中。當調用的時候,在Advice所在類文件中做以下聲明: @Before("pointcut類完整名.簽名()")//BeforeAdvice @AfterReturing(pointcut="pointcut類完整名.簽名()",returning="retVal") @AfterThrowing(pointcut="pointcut類完整名.簽名()",throwing="throwable") @Around("pointcut類完整名.簽名()") 二、在Advice所在類中聲明Pointcut。 若是一個Pointcut須要被多個Advice引用,那麼能夠在Advice類文件中提早聲明一個特定的Pointcut如: @Pointcut("execution(* com.YH.類型名.*(..))")//pointcut的定義 public void point(){}//pointcut的簽名 而後再在每一個Advice聲明中直接引用其簽名便可。 三、每一個Advice都直接引用Pointcut的描述;如 @Before("execution(* com.YH.類型名.*(..))")//BeforeAdvice 實時證實,第一種與第二種方法,總會報錯,多是JDK版本與AspectJ版本不一致所致。爲了保持較高可移植性,儘可能用第三種方法。
相關文章
相關標籤/搜索