2

誰かがそれを行う方法を提案してもらえますか? メソッドの呼び出しだけを両方に渡すのではなく、interceptorA の invoke() メソッドの結果をinterceptorB に渡したいと思ったとしましょう。

<bean id="personTarget" class="com.mycompany.PersonImpl">
    <property name="name" value="Tony"/>
    <property name="age" value="51"/>
</bean>

<bean id="interceptorA" class="com.example.MySampleInterceptor"/>
<bean id="interceptorB" class="org.springframework.aop.interceptor.DebugInterceptor"/>

<bean id="person" 
    class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces" value="com.mycompany.Person"/>

    <property name="target" ref="personTarget"/>
    <property name="interceptorNames">
        <list>
            <value>interceptorA</value>
            <value>interceptorB</value>
        </list>
    </property>
</bean>

考えられる方法の 1 つは、インターセプターを逆に注文して実行することです。

public class DebugInterceptor implements MethodInterceptor {

    public Object invoke(MethodInvocation invocation) throws Throwable {
        System.out.println("Before: invocation=[" + invocation + "]");
        Object rval = invocation.proceed();
        System.out.println("Invocation returned");
        return rval;
    }
}

前のインターセプターの最初のインターセプター使用結果値を持っています。

4

0 に答える 0