Spring Aop 实现日志功能 ---- 第二篇 自定义注解开发

1  注解是什么,元数据是什么

从JDK5开始,Java支持在源文件中嵌入补充信息,这类信息成为注解。注解不会改变程序的动作,因此也就不会改变程序的语

义。但是在开发和部署期间,各种工具可以使用这类信息,例如,源代码生成器可以处理注解,术语 “元数据”也用于表示这个

特性。但是术语“注解”更具描述性并且更常使用。

2 注解的原理

    1 注解是通过基于接口的机制创建的,所有注解只能包含方法声明,但是不能为这些方法提供方法体,而是由Java实现这些方

法。

    2 注解不能包含extends子句。但是,所有注解类型都自动扩展Annotation接口,因此,Annotation是所有注解的超接口,    

3 如何定义一个注解

    @interface 注解名称{

            String str();

             

            int  val();

    }

e.g

    @interface MyAnno{

             String str();

             int       val();

        }

     

4 如何使用了一个注解

       在JDK8之前,注解只能用于声明,所以我们先介绍注解的声明特性

4.1 注解的声明

    类,方法,域变量,参数以及枚举常量都可以带有注解,甚至注解本身也可以被注解。对于所有情况,注解都要放在声明的最

前面。应用注解时,需要为注解的成员提供值。下面的使用详情对应着上面的声明

    @MyAnno(str="例子",val=00)

    public  void test(){

    }

这个注解被链接到方法test()。我们来解析一下这个过程,注解的名称以@作为前缀,后面跟位于圆括号的成员初始化列表。为了

给成员提供值。需要为成员的名称赋予值。所以在这个例子中 将字符串列子赋给MyAnno的str成员。注意在这条赋值语句中。

在str之后没有原括号。当为注解成员提供数值时,只使用成员的名称。因此,在这个上下文中,注解成员看起来像域变量

4.2 注解指定保留策略

    注解的保留策略决定了什么位置丢弃注解。JAVA定义了三种策略。他们被封装到java.lang.annotation.RectentionPolicy枚

举中。这三种策略分别是 SOURCE,CLASS RUNTIME

     使用SOURCE保留策略的注解。只在源文件中保留。在编译期间会被抛弃

     使用CLASS保留的策略的注解。在编译时存储到.class文件中。但是,在运行时通过JVM不能得到这些注解。

    使用RUNTIME 保留策略的注解,在编译时会存储到.class文件中。并且在运行时可以通过JVM获取这些注解。因此,

RUNTIME保留策略提供了最永久性的注解。       


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值