我创建了这个类来添加GSON到spring-boot classpath。问题是,由于没有一个有效的转换器,我无法查看任何Htmltext或图片内容。
我对Spring-Boot比较陌生。
我想在spring-boot中添加Gson而不是Jackson,并且能够使用chrome浏览网页应用。
这是我的类。
@Configuration
@EnableWebMvc
public class GsonSpringBootConfigurer implements WebMvcConfigurer {
private static final Logger log = LoggerFactory.getLogger(SyncController.class);
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
for(HttpMessageConverter httpMessageConverter : converters){
log.info(httpMessageConverter.toString());
}
converters.add(createGsonHttpMessageConverter());
}
private GsonHttpMessageConverter createGsonHttpMessageConverter() {
Gson gson = JsonUtils.getGsonBuilder();
GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
converter.setGson(gson);
return converter;
}
}
请注意以下Javadoc configureMessageConverters
州
配置
HttpMessageConverter
用于读写请求或响应的主体。如果没有添加转换器,则会注册一个默认的转换器列表。请注意,向列表中添加转换器。关闭默认的转换器注册. 要在不影响默认注册的情况下简单地添加一个转换器,请考虑使用以下方法
extendMessageConverters(java.util.List)
来代替。
换句话说,你已经删除了所有处理其他内容类型的转换器。
请注意,Spring MVC只注册了Jackson的 HttpMessageConverter
(MappingJackson2HttpMessageConverter
),如果相应的Jackson库在您的classpath中。您可以删除它们,并且,假设您的classpath中存在Gson,则可以用一个 GsonHttpMessageConverter
将为你注册。
从你的代码来看,你似乎想创建一个自定义的 GsonHttpMessageConverter
. 在这种情况下,你可以按照Javadoc说明,使用 extendMessageConverters
.
一个钩子,用于在配置转换器列表后对其进行扩展或修改。这可能很有用,例如,允许注册默认转换器,然后通过该方法插入一个自定义转换器。
你首先要删除现有的实例,然后添加你自己的实例。比如说
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
// remove the Jackson version if Jackson is still in your classpath
converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
// remove the existing instance (from defaults)
converters.removeIf(converter -> converter instanceof GsonHttpMessageConverter);
// add your custom
converters.add(createGsonHttpMessageConverter());
}