새소식

반응형
Java/Spring

RequestContextHolder

  • -
반응형

RequestContextHolder

Spring 전역으로 Request 에 대한 정보를 가져올 때 사용한다.

RequestContextHolder 를 이용해서 Controller, Service, Dao 등 전 구간에서 HttpServletRequest에 접근할 수 있다.

 

RequestContextHolder 가 초기화 되는 시점은 Servlet이 생성될 때이다.

즉, 생성 시기는 Http Request가 오는 시점에 생성 및 초기화 되어지고 비즈니스 로직을 수행한 후 서블릿이 

Destroy 될 때 Clean 된다.

 

RequestContextHolder는 같은 쓰레드 범위에서 데이터를 요청할 수 있다. 새로운 쓰레드를 생성하는 순간

DispatcherServlet의 범위에서 벗어나 서로 다른 서블릿이 된다.

 

RequestContextHolder Method

- getRequestAttributes() : 현재 Thread의 RequestAttributes를 반환한다.

 

- currentRequestAttributes() : 현재 Thread의 RequestAttributes를 반환한다.

 

- resetReuqestAttributes() : 현재 Thread에 대한 RequestAttributes를 재설정한다.

 

getRequestAttributes() 와 currentRequestAttributes() 의 기능은 거의 비슷하다.

getRequestAttributes()는 해당되는 RequestAttributes가 없으면 Null 을 반환한다.

하지만 currentRequestAttributes()는 해당되는 RequestAttributes 객체가 없을 경우 예외를 발생시킨다.

 

* HttpServletRequest

클라이언트의 요청과 관련된 정보와 동작을 가지고 있는 객체다.

Http 프로토콜의 Request 정보를 서블릿에게 전달하기 위한 목적인 객체이기도 하다.

생성되는 시점은 클라이언트의 요청이 들어오면 WAS 가 요청에 맞게 HttpServletRequest 객체,

HttpServletResponse 객체를 생성한다.

 

클라이언트가 요청을 보내고 서버로 요청이 들어오면 서버에서는 HttpServletRequest 객체를 생성하고 해당 요청

Path 에 매핑된 서블릿에게 전달된다.

이렇게 전달받은 HttpServletRequest 객체를 통해 Header 정보, Parameter, Cookie, URI, URL 등의 정보를 읽을 수 있다.

반응형

'Java > Spring' 카테고리의 다른 글

Spring Boot resources Directory Profile 마다 환경 분리  (0) 2022.05.16
StringUtils  (0) 2022.05.13
@configurationProperties  (0) 2022.05.03
HikariCP  (0) 2022.05.03
<util:properties> 태그를 이용한 Context 파일에 프로퍼티 등록  (0) 2022.05.02
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.