006-自定义枚举注解

一、业务需求描述

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值