查看SecurityContextCallableProcessingInterceptor的源代码(由@Rob Winch编写,请参阅here),我注意到拦截器将SecurityContext从一个线程复制到另一个线程,但是使用成员变量。我理解为什么这是必要的,因为这个接口的回调发生在不同的线程上。
考虑其他拦截器如何工作(如HandlerInterceptors),通常单个实例服务于所有请求。这是这种情况吗?如果是,这个线程是否安全?
答案 0 :(得分:0)
SecurityContextCallableProcessingInterceptor
不是ThreadSafe。必须为每个Thread创建一个新实例。这是使用WebAsyncManagerIntegrationFilter