SpringMVC之自动注入Request对象
前几天看了领导写的一段代码,在Controller中注入了HttpServletRequest,形式如下所示: @RestController public class AutowiredRequestController { @Autowired private HttpServletRequest request; } 当时看到了这一段代码,首先想到的是AutowiredRequestController是一个singleton的bean,HttpServletRequest是一个变化的共享变量,每个请求对象都是不一样的,这样写不会有线程安全问题吗?带着疑问去翻了翻SpringMVC的源码,结论是:不会有线程安全问题!!!不会有线程安全问题!!!!不会有线程安全问题!!!下面我们来分析一下: 在前面的文章中我们简单的分析过SpringMVC的上下文初始化过程( SpringMVC之浅析上下文初始化(一) 和 SpringMVC之浅析上下文初始化(二) ),SpringMVC环境中的父上下文时:XmlWebApplicationContext。下面我们先看一下XmlWebApplicationContext的UML类图(去掉了一些暂时无关的): 之前也说过会调用AbstractApplicationContext中的refresh方法进行Bean的组装初始化的过程