技术分享 | SpringBoot 流式输出时,正常输出后为何突然报错?
项目背景 一个 SpringBoot 项目同时使用了 Tomcat 的过滤器和 Spring 的拦截器,一些线程变量在过滤器中初始化并在拦截器中使用。 该项目需要调用大语言模型进行流式输出。 项目中,笔者使用 SpringBoot 的 ResponseEntity<StreamingResponseBody> 将流式输出返回前端。 问题出现 问题出现在上述第 3 点:正常输出一段内容后,后台突然报错,而报错内容由拦截器产生。 笔者仔细查看了报错日志,发现只是拦截器的问题:执行时由于某些线程变量不存在而报错。但是,这些线程变量已经在过滤器中初始化了。 那么问题来了:为什么这个接口明明可以正常通过过滤器和拦截器,并开始正常输出,却又突然在拦截器中报错呢? 场景重现 Filter @Slf4j @Component @Order(1) public class MyFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse serv...
