DelegateInterceptorみたび
ハタさん、ありがとうございます。
こちらもDelegateInterceptorのソースを見てみました。
えーと、僕はSeasarの細かい概念のところはわからないんですが(ヲイたぶん、その理解で正しいと思います。
package org.seasar.framework.aop.interceptors; : public class DelegateInterceptor extends AbstractInterceptor { : public Object invoke(MethodInvocation invocation) throws Throwable { : if (!MethodUtil.isAbstract(method)) { return invocation.proceed(); } else if (beanDesc_.hasMethod(methodName)) { return beanDesc_.invoke(target_, methodName, invocation .getArguments()); } else { throw new MethodNotFoundRuntimeException( getTargetClass(invocation), methodName, invocation .getArguments()); } } }
ということで、仰るとおりabstractでなければならないようですね。納得しました。ありがとうございます。
確かに一理あると思いますが、もっと明確な目的があるような気がしています。
ちゃんと実装してんのに、勝手にaopがされてしまうと予期せぬ誤解を招きかねないので、そういう仕様になっているんじゃないでしょうか。
:
abstractであることはきっと「必要な部分だけを書く」ってことに利点があるんじゃないでしょーか。面倒な部分はaopでやっちゃってくれーみたいな感じで。
ひがさんのblogでS2Remotingを絡めて説明しているのを見つけましたが、元々リモート呼び出しを念頭に置いて(J2EE絡み?)作られたんでしょうかね。