是否可以拦截对类方法的任何调用?

时间:2015-03-05 16:51:49

标签: java spring

在我们的项目中,我们正在使用Spring Framework,现在我需要拦截对任何对象方法的任何方法调用。 Spring提供这样的设施吗?我的意思是,例如我们有一个方法:

public void m(){
    MyClass a = new MyClass();
    a.method(); //I need to intercept that method call and invoke some stuff
}

这样的事情可能吗?

2 个答案:

答案 0 :(得分:3)

是的,它可能 - 您需要使用AOP。如果你想拦截来自 spring managed bean 的方法的每次调用,那么Spring AOP java代理就足够了。否则,您将需要使用AspectJ。

答案 1 :(得分:1)

您需要在项目中加入Spring AOP

拦截MyClass中定义的方法的任何调用的选项是:

@Around("* my.application.MyClass.*(..)")
public Object interceptAnyMethodCall(ProceedingJoinPoint pjp) throws Throwable {

    Object retVal = pjp.proceed();

    // ... your code

    return retVal;
}