自定义注解了解一下

简介: 自定义注解了解一下

一 故事背景

乐乐最近的学习中发现别人有自己定义注解,乐乐觉得很炫,注解这东西属于一种切面,自己去实现一定是很酷的一件事,于是乐乐也自己动手写了一个邮件检验的自定义注解

二 实践

  1. 先写个邮件校验注解

     @Target(ElementType.FIELD)
     @Retention(RetentionPolicy.RUNTIME)
     public @interface EmailValidate {
         String message();
     }
    
    

  1. 写一个注解管理器

    public class EmailValidateHandle {

    public static <T> String validator(T t) throws IllegalArgumentException, IllegalAccessException{
        StringBuilder errorMessage = new StringBuilder();
        Class<? extends Object> cla = t.getClass();
        //利用反射获取类的所有字段包含私有属性
        Field[] fields = cla.getDeclaredFields();
        for(Field f:fields){
            //判断字段是否有定义NotNull注解
            EmailValidate emailValidateAnnotation = f.getAnnotation(EmailValidate.class);
            if(null != emailValidateAnnotation){
                //设置些属性是可以访问的
                f.setAccessible(true);
                //得到此属性的值
                Object val = f.get(t);
                boolean flag = checkEmail(val);
                if(!flag){
                    //获取注解上的异常信息
                    errorMessage.append(emailValidateAnnotation.message()).append(",");
                }
            }
        }
        return errorMessage.toString();
    }

    }

  2. 将注解放在要校验的属性上

    /**

    • 收件人

    */
    @EmailValidate(message = "收件人邮箱格式有误")
    private String recipients;
    /**

    • 抄送人

    */
    @EmailValidate(message = "抄送人邮箱格式有误")
    public String ccEmail;

  3. 在需要调用的地方调用

    String validator = EmailValidateHandle.validator(object);

5.自定义注解完成!

相关文章
|
2月前
自定义注解
自定义注解
11 1
|
7月前
|
Java
简单、快速教你自定义注解
简单、快速教你自定义注解
41 0
|
9月前
|
XML 存储 Java
java注解-自定义注解的实现
java注解-自定义注解的实现
88 0
|
10月前
|
XML Java 编译器
【学习总结】注解和元注解
【学习总结】注解和元注解
【学习总结】注解和元注解
|
12月前
@PostMapping注解
@PostMapping注解
|
Java 编译器
自定义注解以及注解在反射中的应用
自定义注解以及注解在反射中的应用
219 0
|
XML Dubbo Java
duboo注解使用详解
当越来越的的接口与实现类的增加后,duboo的xml配置会越来越多,为了防止几百几千行的代码,减少开发人员配置xml的工作量,使用duboo的注解模式,减少配置多出问题多的可能性!
132 0
duboo注解使用详解
扒一扒@Retryable注解,很优雅,有点意思! (4)
扒一扒@Retryable注解,很优雅,有点意思! (4)
188 0
扒一扒@Retryable注解,很优雅,有点意思! (4)
|
缓存
扒一扒@Retryable注解,很优雅,有点意思! (2)
扒一扒@Retryable注解,很优雅,有点意思! (2)
250 0
扒一扒@Retryable注解,很优雅,有点意思! (2)