Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

DelegateInterceptorみたび

ハタさん、ありがとうございます。


えーと、僕はSeasarの細かい概念のところはわからないんですが(ヲイ

たぶん、その理解で正しいと思います。

こちらもDelegateInterceptorのソースを見てみました。

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