让Spring知道泽西过滤器

我有一个实现ContainerRequestFilter的类,我想向它注入一些spring依赖项,所以我需要让Spring知道Jersey过滤器.过滤器本身在我的web.xml中配置了Jersey servlet

<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.为了让Spring知道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>

关于如何编辑现有代码以允许过滤器看到spring bean的任何建议?

解决方法:

这对于Spring Security应用程序来说非常普遍.您应该使用DelegatingFilterProxy.

您将通过< filter>将此过滤器添加到您的web.xml中.标记,然后将其配置为应用程序容器中的bean.然后,您可以使用它委派给应用程序上下文中的Spring配置过滤器.

我不熟悉Jersey的SpringServlet如何工作,但这就是我将如何委托给Spring配置的过滤器.

上一篇:java-泽西岛2杰克逊注释/ @JsonIgnore


下一篇:java – 杰克逊与jaxb