gpt4 book ai didi

java - 为什么我们需要在 Spring 中指定 HttpMessageConverter?

转载 作者:行者123 更新时间:2023-11-29 08:32:48 25 4
gpt4 key购买 nike

现在我正在使用 Spring MVC,我遇到并发出一些 Controller 方法没有返回数据并抛出 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 – converts byte arrays
StringHttpMessageConverter – converts Strings
ResourceHttpMessageConverter – converts org.springframework.core.io.Resource for any type of octet stream
SourceHttpMessageConverter – converts javax.xml.transform.Source FormHttpMessageConverter – converts form data to/from a MultiValueMap.
Jaxb2RootElementHttpMessageConverter – converts Java objects to/from XML (added only if JAXB2 is present on the classpath)
MappingJackson2HttpMessageConverter – converts JSON (added only if Jackson 2 is present on the classpath)
MappingJacksonHttpMessageConverter – converts JSON (added only if Jackson is present on the classpath)
AtomFeedHttpMessageConverter – converts Atom feeds (added only if Rome is present on the classpath)
RssChannelHttpMessageConverter – converts RSS feeds (added only if Rome is present on the classpath)

我删除了该代码,一切开始正常运行。所以任何人都知道为什么要这样做,我的意思是为什么要编写代码?因为正如我所见,一切都开箱即用,而且该代码毫无用处。所以问题是:

Why do we need to specify HttpMessageConverter in Spring?

最佳答案

MappingJackson2HttpMessageConverter 是在 3.1.2 中添加的,它可能尚未在该版本中自动发现。

代码可能是为旧版本编写的,随着库的升级而变得过时。它也可能是由不知道新版本自动生成的人编写的(如果你从网上随机复制粘贴代码,你真的不知道你最终创造了什么样的怪物)。

你不需要配置额外的转换器,除非你正在做一些默认情况下没有配置的特定事情。如果你不做任何异国情调的事情,现在这种情况应该很少见。

我的问题是,如果您手动配置它,为什么它不起作用。这是不必要的,但这并不意味着它是不允许的。它不应该破坏东西。

关于java - 为什么我们需要在 Spring 中指定 HttpMessageConverter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com