gpt4 book ai didi

java - 使用 Cglib 进行方法调用后拦截

转载 作者:行者123 更新时间:2023-11-30 04:12:22 24 4
gpt4 key购买 nike

我想知道是否可以在调用目标方法后拦截方法?例如,如下所示:

@CleanUp
public void doSomething{
...
}

我希望能够在方法调用后拦截该方法。在上面的示例中,我将在调用方法后进行常见的清理。

最佳答案

如果您使用标准 CGLIB 增强器,您可以选择是要在调用被代理的方法之前还是之后执行代码。例如:

MyClass proxy = (List<String>)Enhancer.create(MyClass.class, new MyInvocationHandler());
proxy.aMethodToInvoke();
.
.
.
class MyInvocationHandler implements MethodInterceptor {
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
System.out.println("Before we invoke the method");
Object retObj = proxy.invoke(obj, args);
System.out.println("After we invoke the method");
return retObj;
}
}

因此,proxy.invoke 调用之后的任何内容都将是在调用代理方法并返回后执行的代码。

关于java - 使用 Cglib 进行方法调用后拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com