Tôi đang cố gắng tiêm một hạt đậu mùa xuân vào một bộ lọc, nhưng không thể làm cho nó hoạt động.Mùa xuân và @Autowired on a DelegatingFilterProxy
Đậu được tiêm luôn là "không có giá trị". Tôi thành công autowiring này cùng một bean trong Controllers và HandlerInterceptors để nó được chú thích một cách chính xác.
Lớp bộ lọc nằm trong cùng gói cơ sở của phần còn lại của Bộ điều khiển.
Đây là phần có liên quan của web.xml của tôi
<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>
Đây là mã cho bộ lọc
@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);
}
}
Bộ lọc được kích hoạt trên mọi yêu cầu.
Đây là những chú thích trong "Usuario" đậu
@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Usuario implements java.io.Serializable { ... }
am i thiếu gì? Cảm ơn!
shouldn Bạn không sử dụng tên lớp chính xác của bạn trong 'lớp lọc'? Và bạn có chắc là bộ lọc của bạn được Spring quản lý? Bạn không nên sử dụng @Configurable ở đây? – skegg99
Tên của bộ lọc là CheckSession, giống như được chỉ ra trong "tên bộ lọc". Nếu tôi thay đổi tên đó trong "tên bộ lọc", tôi nhận được một "NoSuchBeanDefinitionException" từ Spring. Vì vậy, tôi đoán có, bộ lọc đang được quản lý bởi Spring (thông qua DelegatingFilterProxy) nhưng cơ chế autowire vẫn không hoạt động ...: ( – metacortechs