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絡み?)作られたんでしょうかね。