现在我正在使用Spring MVC并且我发现控制器的某些方法没有返回数据并抛出HttpMediaTypeNotAcceptableException
而我的方法正在生成text/plain
。我在配置中发现有人覆盖configureMessageConverters(List<HttpMessageConverter<?>> converters)
WebMvcConfigurerAdapter
@Autowired
private MappingJackson2HttpMessageConverter jsonConverter;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.addAll(Collections.singletonList(jsonConverter));
}
我读了一些文章并发现: 默认情况下,以下HttpMessageConverters实例已预先启用:
ByteArrayHttpMessageConverter - 转换字节数组
StringHttpMessageConverter - 转换字符串
ResourceHttpMessageConverter - 转换 org.springframework.core.io.Resource用于任何类型的八位字节流
SourceHttpMessageConverter - 转换javax.xml.transform.Source FormHttpMessageConverter - 将表单数据转换为/从 MultiValueMap。
Jaxb2RootElementHttpMessageConverter - 将Java对象转换为XML或从XML转换(仅当存在JAXB2时才添加) classpath)
MappingJackson2HttpMessageConverter - 转换JSON (仅在杰克逊2出现在班级路径时才添加)
MappingJacksonHttpMessageConverter - 转换JSON(仅在 杰克逊出现在班级路径上) AtomFeedHttpMessageConverter - 转换Atom提要(仅当类路径中存在罗马时才添加)
RssChannelHttpMessageConverter - 转换RSS提要(仅在添加时添加) 罗马出现在类路径上)
我删除了该代码,一切正常。所以任何人都知道为什么要这样做,我的意思是为什么代码是写的?因为我看到一切都是开箱即用的,而且代码没用。 所以问题是:
为什么我们需要在Spring中指定HttpMessageConverter?
答案 0 :(得分:4)
<header>
<h1>
<div id="containertop">header</div>
</h1>
</header>
<div id="parent">
<div id="containercircle" float="right">
<div id="circle" onclick="ShowPicture(this,'1')">Test</div>
</div>
<div id="containerimg">
<img id="pic0" class="crop" src="boor.jpg" style="display:none;" />
<img id="pic1" class="crop" src="boor.jpg" style="display:none;" />
<img id="pic2" class="crop" src="boor.jpg" style="display:none;" />
<img id="pic3" class="crop" src="boor.jpg" style="display:none;" />
</div>
</div>
已添加到MappingJackson2HttpMessageConverter
中,但该版本可能尚未自动发现。
代码可能是为旧版本编写的,随着库的升级而变得过时。它也可能是由一个不知道它是自动更新版本的人编写的(如果你从网上随机复制粘贴代码,你真的不知道你结束了什么样的怪物创造)。
除非您已经执行了默认情况下尚未配置的特定内容,否则您不需要配置其他转换器。如果你不做任何异国情调,那么这些日子应该是非常罕见的。
我的问题是,如果您手动配置它,为什么它不起作用。这是不必要的,但这并不意味着它不被允许。它不应该破坏。