Jackson一直是spring.framework默认的json库, 不过我们有时候会希望配置Gson为controller的消息转换器, 以便用到Gson一些便利feature(例如各种方便的注解). 幸好, 从4.1版本后spring添加了对GsonHttpMessageConverter的支持. 配置方法很简单, 下面给出Spring-boot, Java和XML配置方式.
在Spring-boot自定义Configuration:
package com.abc;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import java.util.ArrayList;
import java.util.Collection;
/**
* @author kami.wm
*/
@Configuration
public class CustomConfiguration {
@Bean
public HttpMessageConverters customConverters() {
Collection<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
messageConverters.add(gsonHttpMessageConverter);
return new HttpMessageConverters(true, messageConverters);
}
}
通过Java配置
@Configuration
@EnableWebMvc
public class Application extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter < ? >> converters) {
GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
converters.add(gsonHttpMessageConverter);
}
}
在XML配置文件中配置:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.GsonHttpMessageConverter"/>
</list>
</property>
</bean>