Решил благодаря комментарию от @dur
.
Сначала я удалил аннотацию @Component
, чтобы мой фильтр не создавался дважды.
Фильтр:
public class TestFilter implements Filter {
private String test;
public void init(FilterConfig cfg) {
this.test = "TEST1234";
System.out.println("TEST: " + this.test);
}
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("TEST: " + this.test);
}
public void destroy() {}
}
Также я создал экземпляр фильтра как bean
вместо прямого вызова newFilter()
в функции addFilterBefore()
.
SecurityConfig:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public TestFilter testFilter() {
return new TestFilter();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterBefore(
testFilter(),
AbstractPreAuthenticatedProcessingFilter.class
);
}
}
Вывод на консоль (теперь, как и ожидалось):
init: TEST: TEST1234
doFilter: TEST: TEST1234