自定义注解了解一下

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

一 故事背景

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

二 实践

  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.自定义注解完成!

相关文章
|
Java 编译器 数据安全/隐私保护
自定义注解与AOP结合使用
自定义注解与AOP结合使用
110 0
|
Java
简单、快速教你自定义注解
简单、快速教你自定义注解
66 0
|
2月前
|
存储 缓存 Java
自定义注解
自定义注解
35 0
自定义注解
|
4月前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
7月前
|
Java Spring
自定义注解+AOP
自定义注解+AOP
62 1
|
8月前
|
Java 数据库连接 数据库
什么时候用@MapperScan 注解?
什么时候用@MapperScan 注解?
264 0
|
Java
springmvc之自定义注解-->自定义注解简介,基本案例和aop自定义注解
springmvc之自定义注解-->自定义注解简介,基本案例和aop自定义注解
60 0
|
XML 存储 Java
java注解-自定义注解的实现
java注解-自定义注解的实现
122 0