天天看點

Jackson與spring架構整合的坑

在JavaWEB項目中,使用SSM架構,在項目啟動時出現如下錯誤: 

Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter] for bean with name ‘mappingJacksonHttpMessageConverter’ defined in class path resource [spring-mvc.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

檢視之後,出錯的地方為配置檔案中配置了一個bean,id為mappingJacksonHttpMessageConverter,class為 

“org.springframework.http.converter.json.MappingJacksonHttpMessageConverter”,

糾結很久之後,發現其實就是和所用的的Spring架構的版本有關,這個要注意spring版本,3.x和4.x配置不同

解決辦法:

spring3.x是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

spring4.x是org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

    <!-- 避免IE執行AJAX時,傳回JSON出現下載下傳檔案 -->
	<!-- 支援JSON資料格式 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 解析導出檔案byte流 -->
				<ref bean="fastJsonHttpMessageConverter" />
				<ref bean="mappingJacksonHttpMessageConverter" />
			</list>
		</property>
	</bean>
	<bean id="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
	</bean>
	<!-- 使用fastJson來支援JSON資料格式 -->
	<bean id="fastJsonHttpMessageConverter"
		class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
				<value>application/json</value>
			</list>
		</property>
		<property name="features">
			<list>
				<value>WriteMapNullValue</value>
				<value>QuoteFieldNames</value>
			</list>
		</property>
	</bean>