As detailed in the update/comments, this was caused by my own stupidity.
Spring-Boot is able to autowire Request/Session scoped beans into filter’s that are outside of the DispatcherServlet
As per Spring’s documentation, we need to add the RequestContextListener
or RequestContextFilter
to enable this functionality:
To support the scoping of beans at the request, session, and global
session levels (web-scoped beans), some minor initial configuration is
required before you define your beans. (This initial setup is not
required for the standard scopes, singleton and prototype.)
…If you access scoped beans within Spring Web MVC, in effect, within a
request that is processed by the Spring DispatcherServlet, or
DispatcherPortlet, then no special setup is necessary:
DispatcherServlet and DispatcherPortlet already expose all relevant
state.
To handle this, I needed to register a RequestContextListener bean:
@Bean public RequestContextListener requestContextListener(){
return new RequestContextListener();
}
If you don’t register that bean, you will get an error stating that you are trying to access the Request scope outside of DispatcherServlet.
The problem I experienced(autowired objects just not being injected) was caused by the fact that I was just registering my custom filter as a standard class instance, not a Spring managed bean:
http.addFilterBefore( new PreAuthFilter(), BasicAuthenticationFilter )
To solve this, I just moved the creation of the PreAuthFilter
to a sepearte @Bean
method, the @Autowired
functionality then worked fine.