package com.spring.common.util; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import lombok.AccessLevel; import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class ApplicationUtil { public static ServletRequestAttributes getServletRequestAttributes(){ return (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); } //Request 객체 얻기 public static HttpServletRequest getRequest(){ return getServletRequestAttributes().getRequest(); } //Set Request Attribute public static void setRequestAttributes(String key, Object obj){ getServletRequestAttributes().setAttribute(key, obj, RequestAttributes.SCOPE_REQUEST); } //Get Request Attribute public static Object getRequestAttributes(String key){ return getServletRequestAttributes().getAttribute(key, RequestAttributes.SCOPE_REQUEST); } //Session 객체 얻기 public static HttpSession getSession(){ return getRequest().getSession(); } //Set Session Attributes public static void setSessionAttributes(String key, Object obj){ getServletRequestAttributes().setAttribute(key, obj, RequestAttributes.SCOPE_SESSION); } //Get Session Attributes public static Object getSessionAttributes(String key){ return getServletRequestAttributes().getAttribute(key, RequestAttributes.SCOPE_SESSION); } //HttpServletResponse 객체 얻기 public static HttpServletResponse getResponse(){ return getServletRequestAttributes().getResponse(); } //beanName을 통해서 Bean을 얻을 수 있다. public static Object getBean(String beanName){ var context = ContextLoader.getCurrentWebApplicationContext(); if (context == null) { throw new IllegalStateException("WebApplicationContext를 찾을 수 없습니다."); } return context.getBean(beanName); } }