package itn.com.cmm.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; /** * * @author : 이호영 * @fileName : ContextUtil.java * @date : 2023.04.07 * @description : 빈이 아닌 객체에서 스프링 빈(bean) 및 서블릿(servlet) 객체 직접 얻는 Util * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * * 2023.04.07 이호영 최초 생성 * * * */ public class ContextUtil { /** * 빈을 직접 얻습니다. * * @param beanName * @return */ public static Object getBean(String beanName) { WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); return context.getBean(beanName); } /** * HttpServletReqeust 객체를 직접 얻습니다. * @return */ public static HttpServletRequest getRequest() { ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); return attr.getRequest(); } /** * HttpServletResponse 객체를 직접 얻습니다. * @return */ public static HttpServletResponse getResponse() { ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); return attr.getResponse(); } /** * HttpSession 객체를 직접 얻습니다. * * @param gen 새 세션 생성 여부 * @return */ public static HttpSession getSession(boolean gen) { return ContextUtil.getRequest().getSession(gen); } /** * REQUEST 영역에서 가져오기 * * @param key * @return */ public static Object getAttrFromRequest(String key) { ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); return attr.getAttribute(key, ServletRequestAttributes.SCOPE_REQUEST); } /** * REQUEST 영역에 객체 저장 * * @param key * @param obj */ public static void setAttrToRequest(String key, Object obj) { ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); attr.setAttribute(key, obj, ServletRequestAttributes.SCOPE_REQUEST); } /** * SESSION 영역에서 가져오기 * * @param key * @return */ public static Object getAttrFromSession(String key) { ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); return attr.getAttribute(key, ServletRequestAttributes.SCOPE_SESSION); } /** * Session 영역에 객체 저장 * * @param key * @param obj */ public static void setAttrToSession(String key, Object obj) { ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); attr.setAttribute(key, obj, ServletRequestAttributes.SCOPE_SESSION); } }