package com.xly.erp.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 让 Jackson 通过字段名(而非 getter/setter 推断)确定 JSON 属性名。 * *

项目沿用 docs/03 的匈牙利前缀命名(如 {@code iIncrement} / {@code sUserName}), * Lombok 生成的 getter({@code getIIncrement})经 JavaBeans Introspector 解析为 * {@code IIncrement}(首两字符全大写时保留),导致 JSON 输出 {@code "IIncrement"} * 而非期望的 {@code "iIncrement"}。改为字段访问后,Jackson 直接用字段名作 JSON key。

*/ @Configuration public class JacksonConfig { @Bean public Jackson2ObjectMapperBuilderCustomizer fieldOnlyVisibility() { return builder -> builder .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE) .visibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE) .visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE); } }