在Spring的bean中注入HttpServletReques

作者: 躲在屋顶上的喵 | 来源:发表于2019-08-09 13:47 被阅读9次

@Autowired 

HttpServletRequest request;

和我一样,你一定会想到spring默认创建Controller单例,这样会不会有线程安全问题?

实际上:Spring已经通过ThreadLocal和JDK代理解决了单例的线程安全问题。

实际原理:1.上述注解在Spring容器进行初始化时就会被注入,只不过注入的并非真正的HttpServletRequest对象,而是JDK的代理对象(通过代码debug会发现确实是一个Proxy对象),在方法执行的时候才调用真正的HttpServletRequest对象去执行。

[if !supportLists]2. [endif]Spring能实现在多线程环境下,将各个线程的request进行隔离,且准确无误的进行注入,奥秘就是ThreadLocal。

相关文章

网友评论

    本文标题:在Spring的bean中注入HttpServletReques

    本文链接:https://www.haomeiwen.com/subject/euacjctx.html