我试图注入一个spring bean到过滤器,但不能使它的工作。春天和@Autowired DelegatingFilterProxy
注入的bean始终为“null”。我成功地在Controllers和HandlerInterceptors中自动装配了这个相同的bean,所以它的注释是正确的。
该过滤器类与其余控制器的基本包相同。
这是我的web.xml
<filter>
<filter-name>CheckSession</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>CheckSession</filter-name>
<url-pattern>/panel/*</url-pattern>
</filter-mapping>
的相关部分。这是过滤
@Component
public class CheckSession extends OncePerRequestFilter implements Filter {
@Autowired private Usuario usuario;
@Override
protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
// always null
System.out.println("autowired " + usuario);
chain.doFilter(request, response);
}
}
的过滤器在每个请求触发的代码。
这些都是在 “Usuario” 豆
@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Usuario implements java.io.Serializable { ... }
我失去了什么注解?谢谢!
不该引用'你在'过滤级'中使用你的确切类名吗?你确定你的过滤器是由Spring管理的吗?你不应该在这里使用@Configurable吗? – skegg99 2012-03-13 21:07:17
过滤器的名称是CheckSession,与“过滤器名称”中指示的相同。如果我在“filter-name”中更改该名称,则会从Spring中获取“NoSuchBeanDefinitionException”。所以我想是的,过滤器是由Spring管理的(通过DelegatingFilterProxy),但autowire机制仍然不工作...:( – metacortechs 2012-03-13 21:51:44