HttpServletRequest parameter 없이 Class에서 Request와 Session 사용하기

간혹, Controller나 Service가 아닌 Class에서 Session 또는 Request 객체를 사용해야할 일이 생깁니다.
그렇다고, 그 Class에 HttpServletRequest 파라미터를 새로 정의하면, 이를 사용하는 Service와 Controller를 차례로 손을 봐야 하죠.
Spring framework를 사용한다면, 간단하게 이 문제를 해결할 수 있습니다.

RequestContextHolder가 바로 그 것인데요.
이것을 사용하기 위해서는 web.xml에 아래와 같이 기술해 줘야 합니다.

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

그런 다음, 아래와 같이 Request 객체와 Session 객체를 얻을 수 있습니다.

public class SessionUtils {
  public void setAttribute(String key, Object value) {
    HttpServletRequest request =((ServletRequestAttributes)RequestContextHolder
      .getRequestAttributes()).getRequest();
    HttpSession session = request.getSession(true);
       :
  }
}

맘에 드네요. ^^;