自定义枚举注解
一、业务需求描述
1.问题描述
在字段使用 @ApiModelProperty 描述枚举字段含义,后续业务拓展,如果有新增加枚举值,每一个用到该枚举的字段的地方都要维护一遍,极其不方便,增加了维护成本。
2.解决方案
增加一个自定义枚举注解 @ApiPropertyEnum,来代替 @ApiModelProperty 。这样以后只需要维护对应的枚举类即可。
二、创建一个描述注解
主要功能:为了统一字段描述,用于映射枚举对应的字段,因为定义枚举字段因人而异
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({
ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface SwaggerDisplayEnum {
String code() default "code";
String desc() default "desc";
}
三、创建一个枚举注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({
ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiPropertyEnum {
// 字段名称
String name() default "";
// 字段简要描述
String value() default "";
boolean hidden() default false;
// 标识字段是否必填
boolean required() default false;
// 指定取值对应的枚举类
Class<? extends Enum> enumClazz();
}
四、创建一个枚举
import com.xiaogang.annotation.SwaggerDisplayEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Description: 模板业务类型枚举
* @Author: hzg
* @Date: 2024/9/5 13:52
*/
@Getter
@AllArgsConstructor
@SwaggerDisplayEnum(code = "key", desc = "value")
public enum TemplateBusinessTypeEnum {
ACQUISITION_TEMPLATE("1","收购订单模板"),
SELL_TEMPLATE("2","销售订单模板"),
LEASE_TEMPLATE("3","租赁单模板"),
LEASE_ATR_TEMPLATE("4","租赁归还模板"),
ALLOCATE_TEMPLATE("5","车辆调拨模板"),
;
String key;
String value;
}
五、创建一个配置文件
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil

最低0.47元/天 解锁文章
204

被折叠的 条评论
为什么被折叠?



