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

时间:2011-09-04 20:03:17

标签: java spring spring-mvc thread-local

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

public abstract class FooUtil {

    private static final ThreadLocal<String> threadFoo = new ThreadLocal<String>();

    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

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

1 个答案:

答案 0 :(得分:3)

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