此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0spring-doc.cadn.net.cn

消息转换器

您可以设置HttpMessageConverter在 Java 配置中使用的实例, 通过覆盖configureMessageConverters(). 您还可以在末尾通过覆盖extendMessageConverters().spring-doc.cadn.net.cn

在 Spring Boot 应用程序中,WebMvcAutoConfiguration添加任何HttpMessageConverter除了默认转换器之外,它还检测到的 bean。因此,在 引导应用程序,更喜欢使用 HttpMessageConverters 机制。或者,使用extendMessageConverters修改消息转换器 在结尾。

以下示例使用自定义的ObjectMapper而不是默认的:spring-doc.cadn.net.cn

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

	@Override
	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
		Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
				.indentOutput(true)
				.dateFormat(new SimpleDateFormat("yyyy-MM-dd"))
				.modulesToInstall(new ParameterNamesModule());
		converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
		converters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()));
	}
}
@Configuration
class WebConfiguration : WebMvcConfigurer {

	override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {
		val builder = Jackson2ObjectMapperBuilder()
			.indentOutput(true)
			.dateFormat(SimpleDateFormat("yyyy-MM-dd"))
			.modulesToInstall(ParameterNamesModule())
		converters.add(MappingJackson2HttpMessageConverter(builder.build()))
		converters.add(MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()))
	}
}
<mvc:annotation-driven>
	<mvc:message-converters>
		<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
			<property name="objectMapper" ref="objectMapper"/>
		</bean>
		<bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter">
			<property name="objectMapper" ref="xmlMapper"/>
		</bean>
	</mvc:message-converters>
</mvc:annotation-driven>

<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
	  p:indentOutput="true"
	  p:simpleDateFormat="yyyy-MM-dd"
	  p:modulesToInstall="com.fasterxml.jackson.module.paramnames.ParameterNamesModule"/>

<bean id="xmlMapper" parent="objectMapper" p:createXmlMapper="true"/>

在前面的示例中,Jackson2ObjectMapperBuilder用于创建两者的通用配置MappingJackson2HttpMessageConverterMappingJackson2XmlHttpMessageConverter启用缩进后,自定义日期格式 以及jackson-module-parameter-names, 这增加了对访问参数名称的支持(Java 8 中新增的功能)。spring-doc.cadn.net.cn

此构建器自定义 Jackson 的默认属性,如下所示:spring-doc.cadn.net.cn

如果在 Classpath 中检测到以下众所周知的模块,它还会自动注册它们:spring-doc.cadn.net.cn

使用 Jackson XML 支持启用缩进需要woodstox-core-asldependency 之外jackson-dataformat-xml一。

其他有趣的 Jackson 模块可用:spring-doc.cadn.net.cn