前言
注解是在JDK1.5之后引入的新特性位于java.lang.annotation,注解其实就是对代码进行一种特殊的标记,这些标记可以在编译,类加载和运行时被读取,并执行相应的处理。本文主要分析如何自定义注解和注解的一些基础知识,然后在配合这AOP在实际运用中玩出新花样。
本文分为三部分
- 注解分析
- 自定义注解 编译时注解运行时注解
- 整合AOP
原本可以分为两篇文章,但是想来想去还是写一篇。趁热打铁。
注解分析
注解怎么运行的
想要自定义注解就要知道注解是怎么构成的,结合着项目中常用的注解来分析一下注解到底是怎么工作的。
看一下@Override注解 其主要作用是编译时进行格式检查。点进去看一下@Override实现。
点进去发现里面是空的除了两个元注解什么都没有,那么它到底是怎么实现的呢
其实@Override可以理解为是一个标签,它并没有实际的逻辑处理,而实现逻辑的就是注解的用户。它本质就是一个 『标记式注解』,仅被编译器可知 。
举个例子你的老板让你整理一下重要的文档,但是文档太多了你肯定需要把一下重要的文档给标记出来,然后你交给你老板的时候,老板会怎么做?老板当然是看到有标记的文档就去检查一下。
结合着上面的例子使用@Override注解的就是你,你的老板就是 JVM虚拟机,在编译的时候就是你的老板进行检查的时候,JVM发现了这个注解(标记)则就会进行处理 其处理机制主要是JVM内部处理。
总结下来就是:
定义注解,扫描注解,执行逻辑
元注解
在自定义注解之前我们要知道几个JDK为我们提供的“元注解”,元注解就是定义注解的注解,下面看看都有什么作用。
元注解一共有四个,都可以在java.lang.annotation下找到
- @Target
- @Retention
- @Documented
- @Inherited
@Target
@Target注解主要用于定义注解使用的位置,被描述的注解可以用在什么地方 。@Target的参数是