为什么在 Spring Security 中 FilterChainProxy 内的过滤器上不调用 init() ?

Jan*_*yka 5 java spring spring-security spring-boot

我已经将自己的过滤器配置为FilterChainProxySpring Security 的一部分。我很惊讶该过滤器没有调用init()方法(从接口实现)。Filter当我将过滤器移出FilterChainProxy主链时,该init()方法将按预期调用

是否以FilterChainProxy不同方式对待其过滤器?

一次启动注意事项:

我必须提供FilterRegistrationBeanenabled=false避免注册到主过滤器链,但我不认为这是原因,因为我在非启动应用程序中看到了这种行为。

mud*_*gii 1

是的,FilterChainProxy不调用 init() 和 destroy() 方法。但对我来说这是必要的,所以我使用了它DelegatingFilterProxy,当它设置为 true 时,它​​确实有一种方法可以通过“targetFilterLifecycle”属性来改变它。这样 init() 和 destroy() 将像往常一样被调用。在这里阅读更多信息 - https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/DelegatingFilterProxy.html