3

ContainerRequestFilter を実装するクラスがあります。Spring の依存関係をいくつか注入したいので、Spring に Jersey フィルターを認識させる必要があります。フィルター自体は、Jersey サーブレットを使用して web.xml で構成されています

<servlet>
    <servlet-name>Jersey Spring Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
        <param-value>com.MyFilter</param-value>
    </init-param>
</servlet>

次に、フィルタ クラスは Manager Bean の注入を試みます。春に Filter Bean を認識させるために、applicationContext.xml で Bean を定義してインクルードしました。

@Component
public class MyFilter implements ContainerRequestFilter {

@Autowired
private Manager manager;

Spring にプロキシ生成クラスの使用を強制することにより、フィルター Bean を可視化しようとしましたが、これは機能しません。

<mvc:annotation-driven />

<aop:aspect-autoproxy />    

<bean id="filter" class="com.MyFilter">
    <property name="manager" ref="Manager" />
</bean>

既存のコードを編集してフィルターが春の Bean を認識できるようにする方法について何か提案はありますか?

4

2 に答える 2

8

Jersey の Spring Servlet を使用しているため、アノテーション@InjectParamを使用して、春の依存関係をフィルターに注入できます。

//@Component -> This is not required.
public class MyFilter implements ContainerRequestFilter {

@InjectParam
private Manager manager;

これは、Jersey と Spring を一緒に使用する慣用的な方法だと思います。

于 2013-09-11T04:27:40.197 に答える
4

これは、SpringSecurityアプリケーションでは非常に一般的なことです。これにはを利用する必要がありますDelegatingFilterProxy

このフィルターを<filter>タグを介してweb.xmlに追加し、アプリケーションコンテナーでBeanとして構成します。次に、これを使用して、アプリケーションコンテキストにあるSpring構成のフィルターに委任できます。

私はJerseyのSpringServlet動作に慣れていませんが、それがSpringで構成されたフィルターに委任する方法です。

于 2013-03-22T15:54:00.517 に答える