2

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

コンストラクターが必要ですか? それとも、これは抽象クラスであってはなりませんか? 知らない。

4

1 に答える 1

3

setFooIdと同じスレッドからgetFooIdを呼び出す必要があります。このようにして、同じ結果が得られます。設定時にスレッド名をログに記録し、値を取得して同じかどうかを確認します。

于 2011-09-04T20:10:22.050 に答える