https://blog.csdn.net/javazejian/article/details/71860633
Java本身内置的注解
@Override、@Deprecated、@SuppressWarnning
声明注解与元注解
//声明Test注解
@Target(ElementType.METHOD) // 只能用于方法上
@Retention(RetentionPolicy.RUNTIME) //生存期是运行时
public @interface Test {
}
元注解
@Target和@Retention
@Documented和@Inherited
@Repeatable
当注解未指定Target值时,则此注解可以用于任何元素之上,多个值使用{}包含并用逗号隔开
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
@Retention用来约束注解的生命周期,分别有三个值,源码级别(source),类文件级别(class)或者运行时级别(runtime)
SOURCE:
注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,
注解信息会被丢弃,不会保留在编译好的class文件里)
CLASS:
注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中),
请注意,当注解未定义Retention值时,默认值是CLASS,如Java内置注解,@Override、@Deprecated、@SuppressWarnning等
RUNTIME:
注解信息将在运行期(JVM)也保留,因此可以通过反射机制读取注解的信息(源码、class文件和执行的时候都有注解的信息),
如SpringMvc中的@Controller、@Autowired、@RequestMapping等
编译器对元素的默认值有些过分挑剔。
首先,元素不能有不确定的值。也就是说,元素必须要么具有默认值,
要么在使用注解时提供元素的值。其次,对于非基本类型的元素,
无论是在源代码中声明,还是在注解接口中定义默认值,都不能以null作为值,这就是限制,
没有什么利用可言,但造成一个元素的存在或缺失状态,因为每个注解的声明中,
所有的元素都存在,并且都具有相应的值,为了绕开这个限制,只能定义一些特殊的值,
例如空字符串或负数,表示某个元素不存在。
注解不支持继承
@Documented–一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中。
使用@Documented元注解定义的注解(@DocumentA)将会生成到javadoc中,而@DocumentB则没有在doc文档中出现,这就是元注解@Documented的作用。
@SuppressWarnnings:用于有选择的关闭编译器对类、方法、成员变量、变量初始化的警告,其实现源码如下
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
其内部有一个String数组,主要接收值如下:
deprecation:使用了不赞成使用的类或方法时的警告;
unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型;
fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告;
path:在类路径、源文件路径等中有不存在的路径时的警告;
serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告;
finally:任何 finally 子句不能正常完成时的警告;
Spring常用注解汇总
https://www.cnblogs.com/xingzc/p/5777814.html
junit常用注解详细说明
https://www.cnblogs.com/tobey/p/4837495.html
JUnit4 与 JUnit 5 常用注解对比
https://blog.csdn.net/winteroak/article/details/80591598
Java 单元测试Junit4和Mock的一些总结
https://www.cnblogs.com/wuyun-blog/p/7081548.html
junit4调试和关于spring注解方面的问题
https://blog.csdn.net/ron03129596/article/details/53144365