Spring方法拦截器的问题

时间:2011-08-04 19:09:18

标签: spring aop interceptor spring-aop

我遇到使用Spring拦截器的问题。我有一个CXF服务端点方法,我正在尝试使用拦截器进行包装来进行一些初始化。由于某种原因,没有调用拦截器。这是我的春季参赛作品:

<jaxrs:server id="acadConnectServer" address="/rest/acadconnect3">
    <jaxrs:serviceBeans>
        <ref bean="acadConnectResource" />
    </jaxrs:serviceBeans>
</jaxrs:server>
<bean id="acadConnectResource"
    class="com.test.connectchannel.service.AcadConnectChannelResource" />
<bean id="connectResource" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref="acadConnectResource" />
    <property name="interceptorNames">
        <list>
            <value>methodPointCut</value>
        </list>
    </property>
</bean>
<bean id="methodPointCut"
    class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
    <property name="advice">
        <ref local="methodInterceptor" />
    </property>
    <property name="mappedNames">
        <list>
            <value>search</value>
            <value>searchJSONP</value>
        </list>
    </property>
</bean>
<bean id="methodInterceptor"
    class="com.test.connectchannel.util.ConnectChannelInterceptor">
</bean>

如您所见,我有一个CXF端点类AcadConnectChannelResource,它有几种方法搜索和searchJSONp。我已经创建了Named Method Cut拦截器来拦截这两个方法调用,因此使用自定义intercetor类进行初始化。但是,每次调用方法时,都不会调用拦截器。

不确定我在这里缺少什么,任何指针都会受到赞赏。

-Thanks

1 个答案:

答案 0 :(得分:0)

我可能完全错了,但你不想要

<ref bean="connectResource" />

而不是

<ref bean="acadConnectResource" />
<jaxrs:server>中的

?您正在代理资源,但使用原始资源而不是代理。