可以请任何人建议这样做的方法吗?假设我想将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>
一种可能的方法似乎是反过来订购拦截器并执行以下操作:
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;
}
}
具有前一个拦截器的第一个拦截器使用结果值。