如更新/评论中所述,这是我自己的愚蠢造成的。
Spring-Boot能够将Request /
Session范围内的Bean自动连接到超出
DispatcherServletSpring文档范围的过滤器中。根据Spring的文档,我们需要添加
RequestContextListener或
RequestContextFilter来启用此功能:
为了在请求,会话和全局会话级别(网络范围的Bean)支持Bean的作用域,在定义Bean之前,需要一些较小的初始配置。(对于标准示波器,单例和原型,不需要此初始设置。)…
实际上,如果您在Spring Web MVC中访问由Spring
DispatcherServlet或DispatcherPortlet处理的请求中的作用域Bean,则无需进行特殊设置:DispatcherServlet和DispatcherPortlet已经公开了所有相关状态。
为了解决这个问题,我需要注册一个RequestContextListener bean:
@Bean public RequestContextListener requestContextListener(){ return new RequestContextListener();}如果您不注册该bean,则会收到一条错误消息,指出您试图访问DispatcherServlet之外的Request范围。
我遇到的问题(只是没有插入自动装配的对象)是由于我只是将自定义过滤器注册为标准类实例而不是Spring托管bean而引起的:
http.addFilterBefore( new PreAuthFilter(), BasicAuthenticationFilter )
为了解决这个问题,我只是将创建的方法
PreAuthFilter移到了单独的
@Bean方法上,
@Autowired然后该功能运行良好。



