今私はSpring MVCで作業していますが、コントローラのいくつかのメソッドがデータを返さず、HttpMediaTypeNotAcceptableException
を投げて、私のメソッドがtext/plain
を生成しているという問題がありました。私は誰かがWebMvcConfigurerAdapter
SpringでHttpMessageConverterを指定する必要があるのはなぜですか?
configureMessageConverters(List<HttpMessageConverter<?>> converters)
@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任意の種類のオクテットストリームに対してソース SourceHttpMe ssageConverter - javax.xml.transform.Sourceを変換します。 FormHttpMessageConverter - フォームデータを MultiValueMapに/から変換します。 Jaxb2RootElementHttpMessageConverter - は、Javaは、XML(JAXB2が クラスパス上に存在する場合にのみ添加)MappingJackson2HttpMessageConverterへ/からオブジェクトを変換する - JSON (ジャクソン2は、クラスパス上に存在する場合にのみ添加) MappingJacksonHttpMessageConverterを変換 - JSONに変換する(のみ ジャクソン場合に加え私がいることを取り除い) ローマは、クラスパス上に存在する場合にのみ追加(RSSフィードを変換
- はAtomのフィード(ローマがクラスパス上に存在する場合にのみ追加) RssChannelHttpMessageConverterを変換 - クラスパス)AtomFeedHttpMessageConverter上に存在しますコードすべてが正常に動作するようになりました。だから誰もが持っているアイデアは、なぜそれが行われた、私はそのコードが書かれた意味ですか?なぜなら、すべてが箱から出てきており、そのコードは役に立たなかったからです。 質問:
なぜSpringでHttpMessageConverterを指定する必要がありますか?
春のフレームワークサイトから:「このサポートクラスを拡張することで、事前登録済みの既定のメッセージコンバータが失われていることにも注意してください。したがって、そのメソッドをオーバーライドすると、メッセージ変換プログラムのみが適用されます。 –
ああ、それは 'WebMvcConfigurerAdapter'にありました。 – Kayaman