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>

一种可能的方法似乎是反过来订购拦截器并执行以下操作:

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