본문 바로가기

Java/Spring Boot

[Spring Boot] Spring Web MVC

1. Spring Boot MVC

  • 자동 설정으로 제공하는 여러 기본 기능
    이러한 기본 설정 덕분에 아무런 설정 파일 작성없이 Spring Web MVC 개발 가능
  • spring-boot-autoconfigure-xxx.jar/META-INF/spring.factories 내에 Auto Configure
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\

 

 

 

 

 

 

 

 

2. Spring MVC 확장

  • @Configuration + WebMvcConfigurer
  • Spring Boot가 제공하는 MVC의 기능을 다 사용하면서 추가적으로 설정을 더 하고 싶은 경우
    WebMvcConfigurer가 제공하는 많은 callback method를 사용해서 커스터마이징함
@Configuration
public class WebConfig implements WebMvcConfigurer {
}

 

 

 

 

 

 

 

 

 

3. Spring MVC 재정의

  • @Configuration + @EnableWebMvc
  • Spring Boot가 제공하는 모든 MVC 기능은 사라지고 직접 설정해줘야 함
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
}

 

 

 

 

 

 

 

 

 

 

4. HttpMessageConverters

  • Spring Framework에서 제공하는 인터페이스
  • Http 요청 본문을 객체로 변경하거나, 객체를 Http 응답 본문으로 변경할 때 사용
  • @RequestBody, @ResponseBody와 같이 사용됨
  • 어떤 요청을 받았는지, 어떤 응답을 보내야하는지에 따라 사용하는 HttpMessageConverter가 달라짐
  • @RestController 어노테이션이 붙어있다면 @ResponseBody 생략 가능
    @Controller를 사용했다면 @ResponseBody 생략 불가 (그래야만 MessageConverter가 적용됨)
@PostMapping("/user")
public @ResponseBody User create(@RequestBody User user) {
   return null;
}

 

 

 

 

 

 

 

 

 

 

 

 

5. ViewResolver

  • 들어오는 요청의 Accept 헤더에 따라 응답이 달라진다.
    Accept 헤더 : 브라우저/클라이언트가 원하는 본문의 형태
  • 경우에 따라서는 Accept 헤더를 제공하지 않는 요청들도 있고, 그런 경우에는 format 파라미터 사용
    "/path?format=pdf"
  • HttpMediaTypeNotAcceptableException 에러 발생 시
    : 미디어 타입을 처리할 HttpMessageConverter가 없는 것
    -> HttpMessageConvertersAutoConfiguration에서 확인
  • XML Message Converter 추가하기
    : jackson-dataformat-xml 의존성 추가

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

스프링 부트 개념과 활용 - 인프런 | 강의

스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다., - 강의 소개 | 인프런...

www.inflearn.com

'Java > Spring Boot' 카테고리의 다른 글

[Spring Boot] 웹 JAR  (0) 2022.04.03
[Spring Boot] 정적 리소스 지원  (0) 2022.04.03
[Spring Boot] Spring-Boot-Devtools  (0) 2022.03.25
[Spring Boot] Test  (0) 2022.03.23
[Spring Boot] 로깅 - 커스터마이징  (0) 2022.03.22