1.创建API枚举注解类,代码如下
import ;
import ;
import ;
import ;
import ;
/**
* @Description:枚举类字段属性的注解
* @Author: tarzan Liu
* @Company: 华夏天信研究院
* @Date: 2020/10/31 14:24
*/
@Target({})
@Retention()
public @interface ApiModelPropertyEnum {
/**
* 枚举类对象
*
* @return
*/
Class<? extends BaseEnum> value();
String example() default "";
boolean required() default true;
String dataType() default "";
String enumDesc() default "";
}
2.创建需要引用的基础BaseEnum 枚举类
import ;
/**
* @Description: 基础枚举
* @Author: tarzan Liu
* @Company: 华夏天信研究院
* @Date: 2020/10/28 9:27
*/
public interface BaseEnum {
/**
* 获取枚举类的值
*
* @return Integer
*/
Object getValue();
/**
* 获取枚举类的说明
*
* @return String
*/
String getDesc();
/**
* 比较参数是否与枚举类的value相同
*
* @param value
* @return boolean
*/
default boolean equalsValue(Object value) {
return (getValue(), value);
}
/**
* 比较枚举类是否相同
*
* @param baseEnum
* @return boolean
*/
default boolean equals(BaseEnum baseEnum) {
return (getValue(), ()) && (getDesc(), ());
}
/**
* @Description:返回枚举类的说明
* @Date: 2020/11/7 16:54
*/
static String getInfo(Class<? extends BaseEnum> clazz) {
BaseEnum[] enums = ();
String enumStr = " [ ";
for (BaseEnum e : enums) {
enumStr = enumStr + () + " - " + ()+";";
}
enumStr = enumStr + "]";
return enumStr;
}
}
3.创建所需要的枚举类继承基础BaseEnum 枚举类
import ;
/**
* @Description:文件服务枚举类
* @Author: tarzan LiU
* @Company: 华夏天信研究院
* @Date: 2020/11/25 11:13
*/
public enum FileServiceTypeEnum implements BaseEnum {
/**
* 本地文件服务
*/
LOCAL(1, , "本地文件服务"),
/**
* 阿里OSS文件服务
*/
ALI_OSS(2, FileServiceNameConst.ALI_OSS, "阿里OSS文件服务"),
/**
* 七牛文件服务
*/
QI_NIU_OSS(3, FileServiceNameConst.QI_NIU_OSS, "七牛文件服务"),
/**
* minio文件服务
*/
MINIO_OSS(4, FileServiceNameConst.MINIO_OSS, "minio文件服务");
private Integer locationType;
private String serviceName;
private String desc;
FileServiceTypeEnum(Integer locationType, String serviceName, String desc) {
= locationType;
= serviceName;
= desc;
}
public Integer getLocationType() {
return locationType;
}
public String getServiceName() {
return serviceName;
}
@Override
public Integer getValue() {
return ;
}
@Override
public String getDesc() {
return ;
}
}
4.对象上使用自定义注解
import ;
import ;
import ;
import ;
@Data
public class UploadVO {
@ApiModelProperty(value = "原文件名称")
private String fileName;
@ApiModelProperty(value = "新文件名称")
private String newFileName;
@ApiModelProperty(value = "url")
private String url;
@ApiModelProperty(value = "filePath")
private String filePath;
@ApiModelProperty(value = "文件大小")
private Long fileSize;
@ApiModelPropertyEnum(enumDesc = "文件位置",value = )
private Integer fileLocationType;
@ApiModelProperty("文件id")
private Long id;
}