1、一般情况下,如果用Spring MVC 的Controller时,尽量不在Controller中使用实例变量。这样可以很大程度保证线程安全性了。

2、但是若Controller使用的是单例模式,且Controller中有私有变量,所有request都访问同一个Controller时,这里的私有变量就是共用的,也就是说某个request中如果修改了这个变量,那么在别的请求中也可读到这个修改的内容。

3、首先,在使用Spring开发项目时默认情况下Controller、Service、DAO都是单例模式。

4、其次需要每次都要创建新的Controller,同时Spring的配置文件中要将Controller的作用域声明为原型(prototype)

5、此外,在控制器中要使用ThreadLocal变量

6、通常每个request都是单独的Process,即使同一时间访问同一个控制器对象,只要未修改控制器对象,就不需要做同步处理。

