优雅的处理枚举
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface EnumValue {
}
枚举配置 使用@EnumValue标记枚举的值,该值应该唯一 使用@EnumLabel标记枚举的翻译,在序列化时,会翻译枚举
@Getter
@RequiredArgsConstructor
public enum GenderEnum {
MALE(1,"男"),
FEMALE(2,"女"),
;
@EnumValue
private final Integer code;
@EnumLabel
private final String desc;
}
启动类传入注解
@SpringBootApplication
@EnableJacksonEnum(EnumValue.class)
public class JacksonEnumTestApplication {
public static void main(String[] args) {
SpringApplication.run(JacksonEnumTestApplication.class, args);
}
}
@GetMapping
public String testGet(GenderEnum genderEnum) {
return genderEnum.getDesc();
}
TestDto
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestDto {
private GenderEnum genderEnum;
}
@PostMapping
public String testBody(@RequestBody TestDto dto) {
return dto.getGenderEnum().getDesc();
}