【问题标题】:Two Spring RequestContextFilter and @Component annotations两个 Spring RequestContextFilter 和 @Component 注解
【发布时间】:2011-08-04 13:33:19
【问题描述】:

我有两个从org.springframework.web.filter.RequestContextFilter 扩展的过滤器类,它们都以相同的方式在web.xml 中配置,都使用@Component 注释。当我只有一个时,一切正常。当我添加第二个时,它没有注册。

为什么?我该如何解决这个问题?我需要这两个过滤器吗?

【问题讨论】:

    标签: spring-mvc annotations servlet-filters


    【解决方案1】:

    由于 Spring @Component 是基于类而不是基于名称的,因此第二个过滤器不会加载,因为它被第一个过滤器所遮蔽。两个实现类不同的事实是无关紧要的,因为 Spring 搜索扩展过滤器的东西。

    解决方案是为每个 @Component 使用限定符(例如 @Component(value = "MyFilter1") )并在 web.xml 中声明过滤器的名称作为限定符(例如 <filter><filter-name>MyFilter</filter-name>...</filter>

    不要忘记使用org.springframework.web.filter.DelegatingFilterProxy 并声明过滤器映射。

    是的 - 这很奇怪,但我会立即回答我自己的问题。我在搜索了几个小时后开始写它,然后有了一个想法。我对其进行了测试,它可以工作 - 但其他人没有理由再搜索几个小时。

    【讨论】:

    • 我不清楚你所建议的解决方案。您能否添加一些详细信息,例如您的两个子类的类定义以及相关的方法签名,还请包括您的 web.xml 的所有相关部分以及您的应用程序上下文(如果适用)。
    猜你喜欢
    • 2016-10-31
    • 2019-01-08
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    相关资源
    最近更新 更多