2020. 6. 3. 21:28ㆍ강의/스프링 부트 개념과 활용
1. 스프링 웹 MVC 소개
이번 정리부터는 스프링 웹 MVC에 대한 내용이다. 스프링 부트는 자동 설정으로 제공하는 여러가지 기본 기능을 통해 MVC 구조를 바로 사용할 수 있게 해준다.
위와 같이 스프링부트의 자동설정에는 webMvcAutoConfiguration이 등록되어 있고, 이것을 통해서 바로 MVC를 사용할 수 있게 되는 것이다. WebMvcAutoConfiguration 클래스의 자세한 내용은 따로 정리를 해야겠다. (사실 ConditionalOnMissingBean과 같은 내용은 이미 학습한 내용이다.)
이렇게 자동으로 설정된 MVC내용을 확장하고 싶다면 WebMvcConfigurer을 구현하는 클래스에 @Configuration을 붙여서 내용을 정의해 주면 된다.
스프링 MVC에 대한 내용은 스프링 강의에서 학습하였기 때문에 그곳에 정리를 하려고 한다. 이 강의에서는 스프링부트에서 제공하는 스프링MVC 기능들에 대해서만 학습을 할 예정이다.
2. 스프링 웹 MVC - HttpMessageConverters
HttpMessageConverters는 스프링 프레임워크에서 제공하는 인터페이스이며, 스프링 MVC의 일부분이다. 이것의 기능은 HTTP 요청 본문을 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경해준다. 이 기능을 사용하기 위해서는 @RequestBody 와 @ResponseBody 어노테이션을 사용해야한다. 이때 어떠한 형태의 자료이느냐에 따라 사용되는 Converter는 달라진다.
위와 같은 메소드는 User 객체를 반환해야한다. 이때, HTTP메세지는 모두 문자로 이루어지기 때문에 객체를 Http메세지 형태로 바꾸어 주어야하는데 여기에 Converter가 사용되는 것이다. 기본적으로는 JsonMessageConverter가 사용된다.
(사실 이 클래스에 @RestController가 붙어있으면 @ResponseBody는 생략이 가능하다.)
이 기능은 테스트 코드를 통해 확인할 수 있다.
위와 같은 테스트를 작동해보면 json형태의 문자열(userJson)이 HttpMessageConverter기능을 통해 User객체로 변경이 되어 메소드의 매개변수로 들어오게 되고, 객체를 반환하면 그 객체를 json형태의 문자열로 바꾸어 응답해주는 것이다.
위의 경우로 예를들면, username : minsub , password : 123 으로 유저를 만들어달라는 HTTP Message가 도착하면 해당 정보를 객체화 시켜서 객체를 만들고, 결과를 JSON 형태로 바꾸어 응답해주는 것이다.
3. 스프링 웹 MVC - ViewResolve
스프링부트는 자동으로 ContentNegotiatingViewResolver를 제공해준다. 이것은 들어오는 요청의 accept header에 따라 응답이 달라지게끔 해준다. 즉, accept header에는 어떠한 형식의 본문을 응답받고 싶은지 적혀있고 이것에 따라 응답의 형식을 바꾸어 주는것이 ViewResolver의 역할이다. (하지만 이 정보로는 부족할 수 있기 때문에 format이라는 형식을 사용하여 원하는 형식을 좀 더 명확히 할 수 있다.)
위와같이 accept에 XML형식으로 응답받기를 원한다고 표시해 두면, 리졸버가 알아서 응답을 해당 타입으로 변경시켜서 리턴해주게 된다.
이때 위와 같은 에러가 발생한다면 해당 타입의 응답으로 변환해주는 Converter가 없다는 의미이다. 여기서는 XML으로 converting해주지 못하고 있으므로 해당 의존성을 추가해주고 테스트를 진행해야 통과할 수 있다.
'강의 > 스프링 부트 개념과 활용' 카테고리의 다른 글
[인프런 강의] 스프링 부트 개념과 활용 - 7 (0) | 2020.06.04 |
---|---|
[인프런 강의] 스프링 부트 개념과 활용 - 6 (0) | 2020.06.04 |
[인프런 강의] 스프링 부트 개념과 활용 - 4 (0) | 2020.05.28 |
[인프런 강의] 스프링 부트 개념과 활용 - 3 (0) | 2020.05.27 |
[인프런 강의] 스프링 부트 개념과 활용 - 2 (0) | 2020.05.26 |