2011-10-19 154 views
19

我想要定义一个切入点,它将捕获每个注释了(即)@CatchThis的方法。这是我自己的注释。Spring AOP - 带注释的每种方法的切入点

此外,我想访问该方法的第一个参数,它将是Long类型。也可能有其他的观点,但我不关心他们。


编辑

这就是我现在所拥有的。我不知道的是如何传递用@CatchThis注解的方法的第一个参数。

@Aspect 
public class MyAspect { 
    @Pointcut(value = "execution(public * *(..))") 
    public void anyPublicMethod() { 
    } 

    @Around("anyPublicMethod() && @annotation(catchThis)") 
    public Object logAction(ProceedingJoinPoint pjp, CatchThis catchThis) throws Throwable { 
     return pjp.proceed(); 
    } 
} 
+0

关于使用Spring框架的注解是什么? –

+0

我已更新我的帖子。 – emesx

回答

22

像这样的东西应该做的:

@Aspect 
public class MyAspect{ 

    @Pointcut(value="execution(public * *(..))") 
    public void anyPublicMethod() { 
    } 

    @Around("anyPublicMethod() && @annotation(catchThis) && args(.., Long ,..)") 
    public Object logAction(
     ProceedingJoinPoint pjp, CatchThis catchThis, Long long) 
     throws Throwable { 

     return pjp.proceed(); 
    } 
} 
+0

我已更新我的帖子。你可以做你的片段一样吗?我会很感激。 – emesx

+0

@elmes确定,更新 –

+0

谢谢。是否有可能,捕捉有一个长参数的方法,这不一定是第一个参数 - 它可以是第一个,第二个或最后一个? – emesx