Spring and @Autowired on a DelegatingFilterProxy

后端 未结 2 461
你的背包
你的背包 2021-01-04 12:46

I\'m trying to inject a spring bean into a filter, but can\'t make it work.

The bean injected is always \"null\". I succeed autowiring this same bean in Controllers

2条回答
  •  失恋的感觉
    2021-01-04 13:04

    Works on Spring 3.2.6:

    First: Name your component, 2 options - do only one

    Option A: Annotation - assumes component scanning enabled

    @Component("checkSession")
    public class CheckSession extends OncePerRequestFilter {
    
    @Autowired 
    Usuario usuario;
    
    @Override
    protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws ServletException, IOException {
    
        // not null
        System.out.println("autowired " + usuario);
        chain.doFilter(request,  response);
        }
    }
    

    Option B: wire bean via appliationContext.xml

    
    

    Second: Wire up Spring DelegatingFilterProxy

    
      checkSession
      org.springframework.web.filter.DelegatingFilterProxy
    
    
    
      checkSession
      /*
    
    

    Notes: the bean name is referenced as the filter-name

提交回复
热议问题