<!--springMVC内容协商需要引入以下包-->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.11.1</version>
</dependency>
<!-- 内容协商
favorPathExtension参数表示是否开启后缀,默认true。(使用形如/account/a.json、/account/a.xml的方式)
favorParameter参数表示是否开启request参数识别,默认false。(使用形如/account/a?format=json、/account/?format=xml的方式)
parameterName参数表示使用参数的名字,默认format,如果配置为mediaType,则请求格式变为/account/a?mediaType=json
ignoreAcceptHeader表示是否关闭accept头识别,默认false,即默认开启accept头识别。
defaultContentType表示服务器默认的MediaType类型。
-->
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="true" />
<property name="favorParameter" value="true" />
<property name="parameterName" value="mediaType" />
<property name="ignoreAcceptHeader" value="true"/>
<property name="useJaf" value="false"/>
<property name="defaultContentType" value="application/json" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
<entry key="string" value="text/plain" />
</map>
</property>
</bean>
<!-- ========================= VIEW解析定义 ========================= -->
<!-- 内容协商视图解析器;根据contentNegotiationManager使用的不同mediaTypes决定不同的 view进行响应 默认使用json-->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="0" />
<!-- 内容协商管理器 用于决定media type -->
<property name="contentNegotiationManager" ref="contentNegotiationManager"/>
<!-- 默认视图 解析 -->
<property name="defaultViews">
<list>
<!--是否有根节点的区别,不加配置返回 {"account":{"username":"admin","password":"123456"}} -->
<!-- 加配置返回 {"username":"admin","password":"123456"}-->
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="extractValueFromSingleKeyModel" value="true" />
</bean>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
</property>
</bean>
</list>
</property>
</bean>
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />