Springmvc中在controller注入request会有线程安全问题吗


Springmvc中在controller注入request会有线程安全问题吗


@Controller
public class AController{

    @Autowire
    HttpServletRequest request;

    @RequestMapping("/test")
    public Result test(){
        System.out.println(request.toString());
        request.getHeader("uid");
    }
}



1.通过@Autowire注入的HttpServletRequest只是一个“空壳”,真正的对象是在被访问到的时候才会从线程中取得的。
2.注入的request对象 是HttpServletRequest类的一个实例, 重复多次http请求,发现这个对象的id始终不变
3.但当我们获取设置里面的值时,会通过一个拦截器SpringExtUtil获取得到当前线程关联的 ”ServletRequestAttributes“对象,而获取到的。
4.所以这个是不会因为不同请求改变里面的值面引起线程安全问题的。
5.可以理解为每个请求的HttpServletRequest都是一个与线程关联的实例化。



参考原文: https://my.oschina.net/sluggarddd/blog/678603?fromerr=XhvpvVTi
参考原文: http://www.th7.cn/Program/java/201503/420240.shtml

猜你喜欢

转载自huangyongxing310.iteye.com/blog/2327711
今日推荐