我正在尝试将一个spring bean注入过滤器,但无法使其工作.
注入的bean总是"空".我成功地在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>
Run Code Online (Sandbox Code Playgroud)
这是过滤器的代码
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
过滤器在每个请求时触发.
这些是"Usuario"bean中的注释
@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Usuario implements java.io.Serializable { ... }
Run Code Online (Sandbox Code Playgroud)
我错过了什么?谢谢!