• Home
  • About
    • back
    • Junseok photo

      Junseok

      개발자 블로그

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • back
    • All Posts
    • All Tags
  • Java
    • back
    • java-basic
    • java-solid
    • java-pattern
    • java-logging
  • Javascript
  • Angular
  • spring
    • back
    • spring-framework
    • spring-boot
    • spring-test
  • server
    • back
    • jeus
    • webtob
    • tomcat
  • test
    • back
    • junit
    • assertj
    • hamcrest
    • dbunit
    • spring
  • docker
  • unix
  • maven
  • db
  • network
  • eclipse
  • intellij
  • microservices
  • etc

Spring Handler Methods and MessageConverter

06 Apr 2019

Reading time ~1 minute

@ResponseBody 와 @RequestBody 가 요청본문과 응답본문에 접근하는 건 HttpMessageConverter 를 통해 이루어 집니다.

@ResponseBody

@ResponseBody 는 메서드 실행결과를 응답 본문(response body)으로 취급하겠다고 스프링 MVC에 밝힙니다.

@RequestBody

@ResponseBody는 클래스 수준에서도 지원되며,이 경우 모든 컨트롤러 메서드에 상속됩니다.

@RequestBody 는 HTTP 요청 본문(request body)에 액세스합니다.

ResponseEntity

ResponseEntity는 @ResponseBody와 비슷하지만 상태와 헤더가 있습니다.

@GetMapping("/something")
public ResponseEntity<String> handle() {
    String body = ... ;
    String etag = ... ;
    return ResponseEntity.ok().eTag(etag).build(body);
}

HttpMessageConverter

InputStream과 OutputStream을 통해 HTTP 요청과 응답본문을 읽고 쓸 수 있습니다.

서버측은 RequestMethodHandlerAdapter 에 등록됩니다.

모든 변환기(converter)의 경우 기본 media type이 사용되지만 supportedMediaTypes bean 등록 정보를 설정하여 이를 대체 할 수 있습니다.

아래는 HttpMessageConverter 구현체

  • StringHttpMessageConverter
    • media type: text/*
    • Content-Type: text/plain
  • FormHttpMessageConverter
    • media type: application/x-www-form-urlencoded
    • form data: MultiValueMap<String, String>
  • ByteArrayHttpMessageConverter
    • media type: */*
    • Content-Type: application/octet-stream
  • MarshallingHttpMessageConverter
    • text/xml, application/xml
  • MappingJackson2HttpMessageConverter
    • application/json
  • MappingJackson2XmlHttpMessageConverter
      • application/xml
  • SourceHttpMessageConverter
  • BufferedImageHttpMessageConverter


springframeworkencoding Share Tweet +1