스프링에서 HttpServletRequest에 접근하도록 도와주는 함수이다.
나는 @CreateBy 같이, 로그인한 사람의 정보를 바로 저장할때 사용한다.
원리를 단순하게 설명하면,
1.Spring은 static한 MAP을 하나 만들고,
2.Servlet( 참고: https://zandi123.tistory.com/17 ) 이 호출되면, key를 thread로 해서 제공받은 HttpServletRequest를 보관함.
3. 그리고 servlet이 종료될 때 , 해당 쓰레드를 key로 같는 HttpServletRequest를 MAP에서 제거함.
4. -> 호출된 서블릿과 동일한 쓰레드 내에서는 어느곳이던 같은 HttpServletRequest를 꺼내서 접근할 수 있음.
위는 단순화된 설명이지 실제와는 다르다고 한다.
실제는 ThreadLocalMap이라는 객체가 사용되고, 이는 Map의 구현체가 아니고 보관하는 value는 HttpServletRequest가 아닌 가공된 다른것임.
Spring에서 HttpServletRequest 접근 방법은 아래와 같습니다.
HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
정복하자 스프링 시큐리티!
참고:
http://dveamer.github.io/backend/SpringRequestContextHolder.html
'TIL' 카테고리의 다른 글
/* vs /** (0) | 2023.02.03 |
---|---|
FCM 알람이란 (0) | 2023.01.31 |
[Java] List Compare (2) | 2023.01.18 |
Equals, hashcode Overide (List To Set이 안될때) (2) | 2023.01.10 |
공공 API 사용 ( 공휴일 불러들이기) (0) | 2023.01.04 |