我試圖注入一個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