gpt4 book ai didi

spring - 让 Spring 意识到 Jersey 过滤器

转载 作者:行者123 更新时间:2023-12-02 11:47:48 24 4
gpt4 key购买 nike

我有一个实现ContainerRequestFilter的类,我想向其中注入(inject)一些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>

过滤器类然后尝试注入(inject) 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 beans 有什么建议吗?

最佳答案

由于您使用的是 Jersey 的 Spring Servlet,因此可以使用注释 @InjectParam 将 spring 依赖项注入(inject)到过滤器中。

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

@InjectParam
private Manager manager;

我觉得这是一起使用 Jersey 和 Spring 的惯用方式。

关于spring - 让 Spring 意识到 Jersey 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15574516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com