W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
使用MVC Java編程配置方式時,如果你想替換Spring MVC提供的默認(rèn)轉(zhuǎn)換器,完全定制自己的HttpMessageConverter
,這可以通過覆寫configureMessageConverters()
方法來實(shí)現(xiàn)。如果你只是想定制一下,或者想在默認(rèn)轉(zhuǎn)換器之外再添加其他的轉(zhuǎn)換器,那么可以通過覆寫extendMessageConverters()
方法來實(shí)現(xiàn)。
下面是一段例子,它使用定制的ObjectMapper
構(gòu)造了新的Jackson的JSON和XML轉(zhuǎn)換器,并用它們替換了默認(rèn)提供的轉(zhuǎn)換器:
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {
@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.xml().build()));
}
}
在上面的例子中,Jackson2ObjectMapperBuilder
用于為MappingJackson2HttpMessageConverter
和MappingJackson2XmlHttpMessageConverter
轉(zhuǎn)換器創(chuàng)建公共的配置,比如啟用tab縮進(jìn)、定制的日期格式,并注冊了一個模塊jackson-module-parameter-names用于獲取參數(shù)名(Java 8新增的特性)
除了
jackson- dataformat-xml
,要啟用Jackson XML的tab縮進(jìn)支持,還需要一個woodstox-core-asl
依賴。
還有其他有用的Jackson模塊可以使用:
javax.money
類型的支持(非官方模塊)在XML做同樣的事也是可能的:
<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"/>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: