springboot ObjectMapper如何定制?

springboot ObjectMapper如何定制?需要默认配置能生效,然后再定制一些自己项目需求的配置

阅读 2k
2 个回答

自己实现 Jackson2ObjectMapperBuilder 这个 bean。

我的演示代码是 kotlin,转成对应的 java 写法即可。
    @Bean
    @Primary  // 这里是重点
    fun jackson2ObjectMapperBuilder(): Jackson2ObjectMapperBuilder {
        // code here
        return jackson2ObjectMapperBuilder
    }

当然 Jackson2ObjectMapperBuilder 这个 bean 也不用自己生成,spring boot 框架中自带会生成,你可以注入这个 bean 然后做对应的修改。

如果你是 spring boot 2.7 版本以上,希望自定义能够被同步应用到 mvc 的 http 请求的序列化中,还需要加上:

@Configuration
class MvcJacksonConfigurer(
    val jackson2ObjectMapperBuilder: Jackson2ObjectMapperBuilder
) : WebMvcConfigurer {
    override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {
        converters.add(MappingJackson2HttpMessageConverter(jackson2ObjectMapperBuilder.build()))
    }
}

SmartInitializingSingleton(推荐)或者BeanPostProcessor,这是spring的基础扩展点,ApplicationRunner这种是springboot给你的扩展点

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题