首先明白:什么是单例,什么是多例。
单例:所有请求只生成一个对象。线程不安全
多例:每次请求都会重新生成一个对象,线程安全。
SpringMVC默认的是单例的,所以是线程不安全。
如果想要保证线程安全则有两种方式:
1、声明成多例:在Controller加上@Scope(“prototype”)
2、用ThreadLocal类
ThreadLocal会为每一个线程提供一个独立的变量副本,所以没必要对数据进行同步。把不安全的变量都放在ThreadLocal里面。
ThreadLocal t = new ThreadLocal();
t.set(变量);