스터디-Spring

[스프링 시큐리티] ThreadLocal

일태우 2022. 1. 10. 22:39

java.lang 패키지에서 제공하는 쓰레드 범위 변수

  • 스코프가 쓰레드 이므로 각 쓰레드 내에서만 공유
  • 같은 쓰레드라면 서로 다른 메서드에서도 사용 가능
  • SecurityContextHolder의 기본 전략
public class AccountContext {

    private static final ThreadLocal<Account> ACCOUNT_THREAD_LOCAL = new ThreadLocal<>();

    public static void setAccount(Account account) {
        ACCOUNT_THREAD_LOCAL.set(account);
    }

    public static Account getAccount() {
        return ACCOUNT_THREAD_LOCAL.get();
    }
}