java 反射 自定义注解

/**自定义注解*/

@Target({ElementType.FIELD})

@Retention(RetentionPolicy.RUNTIME)

public @interface StringValidator {

/**错误码*/

String code() default "";

/**最小长度*/

int min() default 0;

/**最大长度*/

int max() default 0;

/**是否链接*/

boolean isLink() default false;

}

/**反射校验数据*/

public class ConfigureValidator {

private static Logger logger = LoggerFactory.getLogger(ConfigureValidator.class);

/**校验活动配置*/

public static void validateConfigure( Object object ){

Class cls = object.getClass();

Field[] fields = cls.getDeclaredFields();

for (Field field : fields) {

try {

StringValidator annotation = field.getAnnotation(StringValidator.class);

if(annotation == null){

continue;

}

field.setAccessible(true);

Object value = field.get(object);

if(value == null || value.equals("")){

throw XExceptionFactory.create(annotation.code());

}

if(annotation.max() > 0){

if(value.toString().length() > annotation.max()){

throw XExceptionFactory.create(annotation.code());

}

}

} catch (IllegalAccessException e) {

logger.error("基础信息校验出错:",e);

}

}

}

}

/**实体注解*/

public class ConfigureVO implements Serializable{

private static final long serialVersionUID = 3839442265900173771L;

private Integer isEnable = 0;

@StringValidator(code = "MARHET_API_WHEEL_SHARE_003" , max = 20)

@Mapping("shareTitle")

private String title;

@StringValidator(code = "MARHET_API_WHEEL_SHARE_004" , max = 20)

@Mapping("shareDescription")

private String description;

@StringValidator(code = "MARHET_API_WHEEL_LINK_001")

@Mapping("shareUrl")

private String link;

@StringValidator(code = "MARHET_API_WHEEL_URL_001")

@Mapping("shareImageUrl")

private String imageUrl;

}

ConfigureVO share = configure.getShare();

if(share.getIsEnable() == 1){

ConfigureValidator.validateConfigure(share);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,045评论 0 3
  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa阅读 8,944评论 0 6
  • 为全面提高学生身体素质,增进学生身心健康,培养学生的集体主义精神,增强团队意识、协作意识,激发学生学习和锻炼的激情...
    洋2017阅读 953评论 2 9
  • 什么?丢书大作战? 莫名其妙! 英国电影《哈利波特》里学霸女神赫敏的扮演者发起一个读书分享活动——在地铁里丢书做游...
    墨尘禅阅读 924评论 5 11