美文网首页
注解详解

注解详解

作者: 守住阳光 | 来源:发表于2018-09-12 19:35 被阅读0次

    一、什么是注解?

            注解是源代码的元数据,是代码的标签。其本质如下:

            1、它是一个附属品,依赖于其他元素存在;

            2、本身没有任何作用,在恰当的时候由外部程序解析产生预定作用。

    二、注解的作用

            1、简化配置;

            2、增加代码的可读性;

            3、提升系统的可维护性。

            spring中定义了很多自定义注解,spring的注解分为两类,一是初始化类注解,二是aop类注解。

    三、注解的分类

            按定义分类:

            1、内置注解,由jdk自身提供,如:@Override,@Deprecated,@SuppressWarning等。

            2、自定义注解。

            按声明周期分类:

            1、SOURCE:表示编译时这个注解会被移除,不会包含在编译后产生的class文件中。

            2、CLASS:表示这个注解会包含在class文件中,但是在运行时会被移除。

            3、RUNNING:表示这个注解会保留到运行时,在运行时可以被jvm访问到,我们可以在运行时通过反射解析这个注解。

    四、注解的属性

            1、Retention

            定义注解的生命周期,可选值为:SOURCE,CLASS,RUNNING。

            2、Documented

            文档化注解,会被javadoc工具文档化。

            3、Inherited

            注解是自动继承的,想让一个类和它的子类都包含某个注解,就可以使用它来修饰这个注解。

            4、Target

            说明了被修饰的注解的应用范围,包括:

            TYPE:表示可以用来修饰类、接口、注解类型或枚举类型。

            PACKAGE:表示可以用来修饰包。

            PARAMETER:表示可以用来修饰参数。

            ANNOTATION_TYPE:表示可以用来修饰注解类型。

            METHOD:表示可以用来修饰方法。

            FIELD:表示可以用来修饰属性(包括枚举常量)。

            CONSTRUCTOR:表示可以用来修饰构造器。

            LOCAL_VARIABLE:表示可以用来修饰局部变量。

    五、如何定义一个注解

    @Retention(RetentionPolicy.RUNTIME)

    @Target({ElementType.TYPE,ElementType.METHOD})

    public @interface CacheResult {

        String key();

        String cacheName();

        boolean needLock() default false;

    }

    六、如何使用注解

            通过jdk反射获取注解信息:

    Class clazz = OrderDetaiServiceImpl.class;

    Class annoClazz = CacheResult .class;

    if(clazz .isAnnotationPresent(annoClazz )){

            Annotion annotion = (CacheResult )clazz .getAnnotation(annoClazz );

            System.out.println(annotion .key());

            System.out.println(annotion .cacheName());

    }

    七、注解使用场景

            注解通常与aop结合使用,步骤:

            编写自定义注解,将注解增加到主拦截方法上,编写切面。

            准备工作包括:引入aspect包,在配置文件中增加:<aop:aspect-autoproxy proxy-target-class="true"/>让aop注解生效。

    相关文章

      网友评论

          本文标题:注解详解

          本文链接:https://www.haomeiwen.com/subject/ynsbgftx.html