誰かがそれを行う方法を提案してもらえますか? メソッドの呼び出しだけを両方に渡すのではなく、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;
}
}
前のインターセプターの最初のインターセプター使用結果値を持っています。