[SPRING] 현재 요청의 HttpServletRequest를 가져 오는 정적 인 방법이 있습니까?
SPRING현재 요청의 HttpServletRequest를 가져 오는 정적 인 방법이 있습니까?
나는 Spring 어노테이션을 사용하고 있는데, 컨트롤러에서 HttpRequestContext를 전달할 수있다.
RequestContext를 전달하는 것보다 정적 인 방법이나 더 나은 해결책을 찾고있다.
해결법
-
==============================
1.나는 이것이 좋은 생각이라고 생각하지 않는다. 서비스 계층은 HTTP 클라이언트를 처리하는지 여부를 몰라도됩니다.
나는 이것이 좋은 생각이라고 생각하지 않는다. 서비스 계층은 HTTP 클라이언트를 처리하는지 여부를 몰라도됩니다.
정적은 올바른 생각처럼 들리지도 않습니다. HttpRequestContext는 특정 클래스가 아닌 HttpRequest 인스턴스와 연결되어야합니다.
내 생각에 더 나은 디자인은 컨텍스트에서 서비스가 필요로하는 것을 가져 와서 전달합니다. HTTP 또는 웹 레이어에 서비스를 연결할 필요가 없습니다.
-
==============================
2.당신이 봄을 사용하는 경우 다음을 할 수 있습니다 :
당신이 봄을 사용하는 경우 다음을 할 수 있습니다 :
public static HttpServletRequest getCurrentHttpRequest(){ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes instanceof ServletRequestAttributes) { HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest(); return request; } logger.debug("Not called in the context of an HTTP request"); return null; }
-
==============================
3.또는 java8 방식
또는 java8 방식
public static Optional<HttpServletRequest> getCurrentHttpRequest() { return Optional.ofNullable(RequestContextHolder.getRequestAttributes()) .filter(requestAttributes -> ServletRequestAttributes.class.isAssignableFrom(requestAttributes.getClass())) .map(requestAttributes -> ((ServletRequestAttributes) requestAttributes)) .map(ServletRequestAttributes::getRequest); }
from https://stackoverflow.com/questions/592123/is-there-a-static-way-to-get-the-httpservletrequest-of-the-current-request by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring이 직접 필드 의존성 주입을 지원하지 않는 이유는 무엇입니까 (autowired를 제외하고)? (0) | 2019.04.03 |
---|---|
[SPRING] @Autowired Spring Security의 UserDetails에 대한 예외 예외 (0) | 2019.04.03 |
[SPRING] NamedParameterJDBCTemplate에서 문자열 목록을 사용하여 결과를 얻는 방법 (0) | 2019.04.03 |
[SPRING] Spring RestTemplate 매개 변수가있는 HTTP Post에서 400 개의 잘못된 요청 오류가 발생합니다. (0) | 2019.04.03 |
[SPRING] Thymeleaf : 속성 및 속성이있는 경우 텍스트 표시 (0) | 2019.04.03 |