SpringMVC的Jackson全局空值处理

java 复制代码
package com.gy.subject.application.config;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.util.List;

/**
 * mvc配置
 * @author 高悦
 * @version 1.0
 * @description: TODO
 * @date 2025/1/4 17:50
 */
@Configuration
public class GlobalConfig extends WebMvcConfigurationSupport {
    @Override
    protected void configureMessageConverters(List<HttpMessageConverter<?>> converters){
        super.configureMessageConverters(converters);
        converters.add(mappingJackson2HttpMessageConverter());
    }

    private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        return new MappingJackson2HttpMessageConverter(objectMapper);
    }


}

类定义

  • GlobalConfig
    • 包名com.gy.subject.application.config,表示这个配置类属于项目的配置包.
    • 注解@Configuration,表示这是一个Spring的配置类,Spring容器会在启动时加载并应用这个类中定义的配置.
    • 继承WebMvcConfigurationSupport,这是一个Spring MVC的配置支持类,提供了许多用于自定义Spring MVC行为的方法,如配置消息转换器、视图解析器等.

方法

  • configureMessageConverters

    • 参数List<HttpMessageConverter<?>> converters,这是一个列表,用于存储Spring MVC的消息转换器.
    • 功能
      • 调用super.configureMessageConverters(converters)来应用Spring MVC的默认消息转换器配置.
      • 调用converters.add(mappingJackson2HttpMessageConverter())将自定义的MappingJackson2HttpMessageConverter添加到消息转换器列表中,以便在Spring MVC中使用.
  • mappingJackson2HttpMessageConverter

    • 功能 :创建并配置一个MappingJackson2HttpMessageConverter实例.
    • 步骤
      • 创建一个ObjectMapper实例,这是Jackson库的核心类,用于处理JSON的序列化和反序列化.
      • 配置ObjectMapper
        • objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false):关闭FAIL_ON_EMPTY_BEANS特性,表示在序列化空对象时不抛出异常,允许序列化空对象.
        • objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL):设置序列化包含策略为NON_NULL,表示在序列化对象时,只包含非空属性,忽略空属性.
      • 返回一个使用配置好的ObjectMapper实例的MappingJackson2HttpMessageConverter对象.

作用

  • 自定义JSON序列化行为 :通过配置ObjectMapper,你可以自定义Spring MVC中JSON的序列化行为,例如忽略空属性、处理空对象等.
  • 扩展Spring MVC配置 :通过继承WebMvcConfigurationSupport并重写configureMessageConverters方法,你可以扩展Spring MVC的默认配置,添加自定义的消息转换器,从而更好地满足项目的需求.

注意事项

  • 版本兼容性 :确保使用的Spring版本与代码兼容,特别是WebMvcConfigurationSupport类的使用.
  • 配置优先级:如果你使用了Spring Boot的自动配置,可能需要考虑配置的优先级,确保自定义配置能够正确应用.
  • 其他配置:除了消息转换器,还可以根据需要配置其他Spring MVC的组件,如视图解析器、异常处理器等.
相关推荐
我登哥MVP1 小时前
Spring Boot 从“会用”到“精通”:自动装配原理
java·spring boot·后端·spring·tomcat·maven·intellij-idea
霸道流氓气质1 小时前
Spring AI Ollama 连接超时问题排查与解决:OkHttp 读超时配置全指南
人工智能·spring·okhttp
lulu12165440782 小时前
2026年-企业级大模型API网关实战指南: 微元算力聚合平台性能优化实测
java·人工智能·spring·性能优化·ai编程
二哈赛车手2 小时前
新人笔记---继图片搜索功能后续以及AI网络搜索功能一些经验与踩坑点,吐槽一下自己在做这方面的崩溃瞬间
java·网络·人工智能·spring boot·笔记·spring
jeffer_liu3 小时前
Spring AI 生产级实战:多模态
java·人工智能·后端·spring·大模型
我是一颗柠檬4 小时前
【Java项目技术亮点】多级缓存一致性方案:Canal+MQ实现数据库与缓存的最终一致
java·数据库·spring·缓存·kafka·rocketmq
我登哥MVP5 小时前
Spring Boot 从“会用”到“精通”:Rest风格原理
java·spring boot·后端·spring·maven·intellij-idea·mybatis
我登哥MVP5 小时前
Spring Boot 从“会用”到“精通”:静态资源原理
java·spring boot·后端·spring·tomcat·maven·intellij-idea
JAVA面经实录9175 小时前
SpringBoot 全套完整版学习文档(零基础+实战+面试+源码)
java·spring boot·spring·架构
接着奏乐接着舞5 小时前
springcloud xxl-job
后端·spring·spring cloud