ターゲットメソッドの呼び出し後にメソッドをインターセプトできるかどうか疑問に思っていましたか? たとえば、次のように表示されます。
@CleanUp
public void doSomething{
...
}
メソッド呼び出し後にメソッドを傍受できるようにしたい。上記のサンプルでは、メソッドの呼び出し後に一般的なクリーンアップを行います。
ターゲットメソッドの呼び出し後にメソッドをインターセプトできるかどうか疑問に思っていましたか? たとえば、次のように表示されます。
@CleanUp
public void doSomething{
...
}
メソッド呼び出し後にメソッドを傍受できるようにしたい。上記のサンプルでは、メソッドの呼び出し後に一般的なクリーンアップを行います。
標準の CGLIB Enhancer を使用する場合は、プロキシされるメソッドが呼び出される前または後にコードを実行するかどうかを選択できます。例えば:
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
呼び出しの後のコードは、プロキシであるメソッドが呼び出されて返された後に実行されるコードになります。