Я пытаюсь вставлять пружинный компонент в фильтр, но не могу заставить его работать.Spring и @Autowired on DelegatingFilterProxy
Введенный bean-компонент всегда «null». Мне удалось автоувеличивать этот же компонент в контроллерах и HandlerInterceptors, чтобы он был правильно аннотирован.
Класс фильтра находится под тем же базовым пакетом остальных контроллеров.
Это соответствующая часть моей 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);
}
}
Фильтр запускающего по каждому запросу.
Это аннотации в «бобе» Новичок
@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Usuario implements java.io.Serializable { ... }
Что мне не хватает? Благодаря!
не должен Вы используете точное имя класса в 'filter-class'? И вы уверены, что ваш фильтр управляется весной? Разве вы не используете @Configurable здесь? – skegg99
Имя фильтра - CheckSession, то же, что указано в «filename». Если я изменю это имя в «filename», я получаю «NoSuchBeanDefinitionException» из Spring. Так что я думаю, да, фильтр управляется Spring (через DelegatingFilterProxy), но механизм autowire все еще не работает ...:( – metacortechs