在java中除了JDK自带的注解之外,还有一些第三方注解,我们在这里先看一下有哪些:
Spring:@Autowried @Service @Repository
Mybatis:@InsertProvider @UpdateProvider @Options
注解的分类:
1、按照运行机制分:源码注解、编译时注解、运行时注解
源码注解:注解只在源码中存在,编译成.class文件之后就不存在了
编译时注解:在源码和.class文件中都存在
运行时注解:运行阶段还会起作用,甚至会影响运行逻辑
2、按照来源分:JDK、来自第三方的注解、自定义注解
3、元注解:注解的注解
自定义注解:
语法要求:
①@interface关键字定义注解,成员以无参无异常的方式声明②可以用defalut为成员指定一个默认值(成员的类型是受限制的,合法的类型包括基本类型和String,Class,Annotation,Enumeration);
③如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)
④注解类可以没有成员,没有成员的注解称为标识注解
public @interface Description{
String desc();
String author();
int age() default 18;
}
元注解:
@Target({ElementType.METHOD,ElementType.TYPE})//注解的作用域:CONSTRUCTOR FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE
@Retetion(RetentionPolicy.RUNTIME)//注解的声明周期:SOURCE CLASS RUNTIME
@Inherited//标识性注解:允许子注解来继承
@Documented//生成javadoc是会包含注解