RequestContextHolder

최준병·2025년 2월 5일

HTTP 요청이 들어올 때마다, 현재 요청 및 세션 정보스레드 로컬RequestAttributes 객체로 바인딩해주는 역할을 합니다.

사용법

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); 
//RequestAttributes객체 가져오기.
        if (requestAttributes instanceof ServletRequestAttributes) {
            HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();            
            HttpSession session = request.getSession();
            // request 및 session 사용.            
        } else {
            // HTTP 요청이 없는 경우
            System.out.println("현재 스레드에 HTTP 요청 정보가 없습니다.");
        }

스레드 로컬에 저장되기 때문에, 어느 layer든 전역적으로 접근할 수 있다.
주로, Controller가 아닌 Business Layer 등에서 Request 객체를 참고하려 할 때 사용한다.
Business Method에 일일이 Request을 파라미터로 넘기기 애매할때 사용.

등록방법

web.xml에 RequestContextListener 리스너 등록.

--- IN web.xml ---
<listener>  
	    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

RequestAttributes 상속관계

RequestAttributes < AbstractRequestAttributes < ServletRequestAttributes

profile
나의 기록

0개의 댓글