ContentNegotiatingViewResolver?
ContentNegotiatingViewResolver은 무엇일까? 하는 역할은 무엇일까?
우선 ContentNegotiatingViewResolver은 View를 찾기 위해 요청 URL의 확장자와 AcceptHeader를 사용하는 ViewResolver이다.
여기서 ViewResolver은 사용자에게 렌더링한 결과를 보여주기 위한 클래스로 그 중 ContentNegotiatingViewResolver은 요청되는 콘텐츠 형식에 기반을 두어 선택한 하나 이상의 다른 뷰 리졸버에게 위임하는 역할을 한다.
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<!-- 확장자와 contentType 을 연결해 준다. -->
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml"/>
<entry key="html" value="text/html"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<!-- 위의 viewResolvers 에 의해 view를 얻지 못했을 경우에 사용되는 view -->
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<property name="defaultContentType" value="application/json" />
</bean>
Property
ContentNegotiatingViewResolver으로 등록된 bean의 속성을 살펴보면 다음과 같은 내용을 알 수 있다.
- mediaType : url의 확장자와 content타입을 일종의 맵으로 연결
- viewResolvers : ContentNegotiatingViewResolver는 다른 Resolver에게 위임을 하기 위한 VewResolver 리스트
- defaultViews : viewResolvers에서 view를 찾지 못했을때 사용되는 기본 view
'프레임워크 > 스프링&스프링부트' 카테고리의 다른 글
API Versioning (0) | 2021.09.28 |
---|---|
@Controller, @RestController 어떠한 차이가?? (0) | 2021.08.05 |
[Spring Boot]build 설정파일 (0) | 2021.07.31 |
[Spring]스프링 프로젝트 빌드 및 실행하기 (0) | 2021.07.22 |
[Spring Boot]Spring MVC Framework (0) | 2021.07.19 |