将拦截器的结果传递给链中的下一个

时间:2012-06-24 16:01:10

标签: java interceptor spring-aop chain

可以请任何人建议这样做吗?假设我想将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;
    }
}

具有前一个拦截器使用结果值。

0 个答案:

没有答案