Class LowercaseEnumJsonMapperCustomizer

java.lang.Object
io.leandev.appfuse.json.LowercaseEnumJsonMapperCustomizer
All Implemented Interfaces:
org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer

public class LowercaseEnumJsonMapperCustomizer extends Object implements org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer

讓 HTTP 層的 enum wire 值一律小寫

為何需要獨立的 customizer:Spring Boot 的 HTTP message converter 取用的是自動配置的 JsonMapper bean(jacksonJsonMapper),不是應用自行宣告的 ObjectMapper bean—— 兩者並存時,應用那顆只服務直接注入它的元件,對 request/response 序列化毫無影響。 故 ObjectMapperBuilder.withLowercaseEnums() 只覆蓋獨立 mapper;要讓 API 的 wire 值 一致,必須另外註冊本 customizer。

註冊方式(顯式 opt-in,框架不 auto-configure):

@Bean
JsonMapperBuilderCustomizer lowercaseEnums() {
    return new LowercaseEnumJsonMapperCustomizer();
}

啟用後 PENDING_CONFIRMATION 序列化為 "pending_confirmation",反序列化容忍大小寫; enum 不需逐個標註 @JsonValue / @JsonCreator。DB 持久化不受影響 (@Enumerated(EnumType.STRING) 仍存 name())。查詢參數/路徑變數另見 StringToEnumConverterFactory

  • Constructor Details

    • LowercaseEnumJsonMapperCustomizer

      public LowercaseEnumJsonMapperCustomizer()
  • Method Details

    • customize

      public void customize(tools.jackson.databind.json.JsonMapper.Builder builder)
      Specified by:
      customize in interface org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer