-
ThreadLocal 과 SpringSecuritySpring/Spring 2020. 8. 9. 14:54
ThreadLocal
- Java.lang 패키지에서 제공하는 스레드 범위 변수이다.
- 스레드 수준의 데이터 저장소로써 같은 스레드 내에서만 공유한다.
- 따라서 같은 스레드라면 해당 데이터를 메서드 매개변수로 넘겨줄 필요가 없게 된다.
- 클래스에서 한 변수를 선언한다면 해당 변수의 scope은 해당 클래스가 될 것이다
- 메서드 안의 변수의 scope은 해당 메서드가 될 것이다.
- ThreadLocal에서 변수의 scope은 Thread가 되며 한 스레드 내에서 변수를 공유한다.
- 요청이 한 쓰레드내에서 사용된다면 파라미터로 전달하지 않아도 된다.
1.
- 가져온 유저의 정보를 ThreadLocal을 통해 setAccount에 저장해보자.
2.
- SpringSecurityContextHolder에는 Authentication이 담겨있고 이 홀더는 ThreadLocal을 사용하며
- 어디서나 접근할 수 있도록 해준다고 했다. 우리도 다음과 같이 메서드 파라미터로 받지 않고
- SecurityContextHolder처럼 ThreadLocal에서 꺼내서 사용하고 있다.
이렇게 SecurityContextHolder의 기본 전략인 ThreadLocal을 직접 간단하게 만들어보았다.
참고 : 인프런(백기선) - 스프링 시큐리티
'Spring > Spring' 카테고리의 다른 글
Mono.just()와 Mono.defer()에 대한 이해 (0) 2021.07.30 1주차 스프링 스터디 (0) 2021.04.19 AuthenticationManager와 Authentication (1) 2020.08.09 SpringSecurityContextHolder와 Authentication (0) 2020.07.23 IOC ( Inversion Of Control ) 와 IOC 컨테이너 (0) 2020.02.22