为什么ThreadLocal实用程序总是在Spring MVC应用程序中返回null?

我编写了这个实用程序类来保存Spring MVC应用程序中的临时数据:

public abstract class FooUtil { private static final ThreadLocal threadFoo = new ThreadLocal(); public static String getFooId(){ return threadFoo.get(); } public static void setFooId(String fooId){ threadFoo.set(fooId); } public static void removeFooId(){ threadFoo.remove(); } } 

所以我调用FooUtil.setFooId("foo")

但是当我稍后调用FooUtil.getFooId() ,它总是返回null

我需要一个构造函数吗? 或者这不应该是一个抽象类? 我不知道。

您需要从与setFooId相同的线程调用getFooId。 这样你就可以得到相同的结果。 我会在设置时记录线程名称并获取值以查看它们是否相同。