Java 可以拦截对类的方法的任何调用吗?

Java 可以拦截对类的方法的任何调用吗?,java,spring,Java,Spring,在我们的项目中,我们使用的是springframework,现在我需要拦截对任何对象方法的任何方法调用。Spring是否提供了这样的设施?我的意思是,例如,我们有一种方法: public void m(){ MyClass a = new MyClass(); a.method(); //I need to intercept that method call and invoke some stuff } 这样的事情可能吗?您需要将其包括在项目中 拦截MyClass中定义的方

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

public void m(){
    MyClass a = new MyClass();
    a.method(); //I need to intercept that method call and invoke some stuff
}
这样的事情可能吗?

您需要将其包括在项目中

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

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

    Object retVal = pjp.proceed();

    // ... your code

    return retVal;
}

是的,这是可能的-您需要使用AOP。如果您希望拦截来自spring托管bean的每个方法调用,那么spring AOP java代理就足够了。否则,您将需要使用AspectJ。

而不是独立的Spring。您需要与AspectJ集成。@SotiriosDelimanolis您的意思是,如果我想拦截对任何可能不是SpringBean方法的方法的任何调用,AspectJ是必需的。没错。使用Spring,您只能拦截Springbean,并且只能使用一些有限的代理aop行为。你需要AspectJ来进行奇特的拦截。@SotiriosDelimanolis只是想澄清一下,
AspectJ
只是一个框架,可以通过maven依赖项简单地应用,还是需要在
JVM
层上集成?比这要复杂一点。看见