相信大部分人用的SpringBoot才遇到这个问题,网上找不到解决方案,说实在,我本不打算用SpringBoot,但有客户要用,不得不使用。
言归正传:
这个问题很好解决,从底层来说,很多人忘记了Servlet是线程无关。现在的框架已经掩盖了这个特性。只要在方法上进行注入response与request,切记不要做全局类变量。
public void downloadFile(@RequestParam Integer fId, HttpServletResponse response) {
//到这里使用response,如何用都是安全的。
}
同一个Controller只是实例化一遍,如果是线程安全,也不会有这个问题。但Spring的特性就是不会轻易创建很多实例。Controller是线程不安全的。所以尽量少用或不用全局的类变量。