Java Spring没有自动连接我的过滤器类
我有一个servlet过滤器声明如下:Java Spring没有自动连接我的过滤器类,java,spring-mvc,spring-3,Java,Spring Mvc,Spring 3,我有一个servlet过滤器声明如下: @Component public class BlahBlahFilter extends OncePerRequestFilter implements Filter { @Autowired @Qualifier("appProperties") AppProperties properties; 对于这样声明的属性: @Component public class BlahBlahFilter extends OncePerRequest
@Component
public class BlahBlahFilter extends OncePerRequestFilter implements Filter {
@Autowired
@Qualifier("appProperties")
AppProperties properties;
对于这样声明的属性:
@Component
public class BlahBlahFilter extends OncePerRequestFilter implements Filter {
@Autowired
@Qualifier("appProperties")
AppProperties properties;
我在应用程序中的许多组件中都有相同的自动连线声明,它们没有问题——但它们都是控制器、服务和其他带有@Component标记的杂项
但是这个过滤器类被忽略了,我不知道如何让Spring将属性注入其中
我注意到在我的调试日志文件中,这是在组件扫描期间写在这个类名旁边的:
"Ignored because not a concrete top-level class"
嗯?是的,它是一个具体的类,它不是抽象的,也不是接口。看起来很可疑
我能做什么
我在这方面看到了一些其他的话题,它们完全没有帮助。他们都没有一个公认的答案,也没有一个帖子对我的处境有帮助
其他可能有帮助的相关代码片段:
web.xml:
blahBlahFilter
BlahBlahFilter.com.blah.BlahBlahFilter
blahBlahFilter
/*
拦截器
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
类路径:spring-mvc.xml
1.
spring-mvc.xml:
<context:annotation-config/>
<context:component-scan base-package="com.blah"/>
<mvc:annotation-driven/>
当您这样声明筛选器时
<filter>
<filter-name>blahBlahFilter</filter-name>
<filter-class>com.blah.BlahBlahFilter</filter-class>
</filter>
blahBlahFilter
BlahBlahFilter.com.blah.BlahBlahFilter
您告诉Servlet容器初始化它,而不是Spring。因此,Spring无法管理其生命周期,也无法将任何内容自动关联到其中。您的上下文中可能有一个BlahBlahFilter
bean,但它不是在Servlet容器中注册的bean
当出现消息“is o.s.c.a.ClassPathBeanDefinitionScanner:Ignored,因为不是具体的顶级类:URL…”时,请使用DelegatingFilterProxy
或在WebApplicationInitializer
中进行过滤器注册。