所有的底层框架都是注解 mysbatis spring springboot
注解
Annotation 不是程序本身,可以对程序做出解释。 可以被其他程序读取。
Annotation的格式 @注释名 在代码中存在,还可以添加一些参数如:@SuppressWarnings(value="unchecked").
Annotation在哪里使用:可以在package,class,methed,field上边,相当于给他们添加了额外的辅助信息,通过【反射机制】编程实现对这些元素的数据访问;通过反射读取注解;
内置注解
@Override:定义在Java.lang.Override中,这个注释用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。
@Deprecated:定义在Java.lang.Deprecated中,这个注释用于修辞方法,属性,类,表示不建议使用这样的元素;
@SuppressWarnings:定义在Java.lang.SuppressWarnings中,这个注解可以抑制编译时的警告。与之前两个注释不同,需要一定的参数才能使用,参数已经定义好了。TYPE, FIELD【字段】, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE;
元注解
@Target(目标):用于描述注解的使用单位范围。
@Retention(source<class<runtime):表示需要什么级别保存注释信息,用于描述注解的生命周期。):表示需要什么级别保存注释信息,用于描述注解的生命周期。
@Document:说明该注解被包含在javadoc中;
@Inherited:说明子类可以继承父类中的该注解;
例子:看看系统是怎么定义注解的
@Documented
@Retention(RetentionPolicy.RUNTIME) 一般自定义都是RUNTIME,即运行时有效
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention { /*一个类里只能有一个公共方法*/
/**
* Returns the retention policy.
* @return the retention policy
*/
RetentionPolicy value();
}
我们自己定义注解:
1.@interface MyAnnotation{} //interface自动继承了java.lang.annotation.Annotation接口;
2.@Target(value={ElementType.TYPE,ElementType.METHOD})ElementType是数组类型,我们可以{}实现多个使用范围,type 类 ,METHOD方法;
3.@Retention(value=RUNTIME) 自定义一般都是运行时有效;
4.@Document 在文档中生效
public calss test{
@MyAnnotation //default为默认赋值,所以注解可以不写参数,但是通常都是要写的;
public void method(){
}
}
@Doument
@Target(value=ElementTye=METHOD)
@Retention(value=RUNTIME)
@interface MyAnnotation{int value()default 0};
总结:
定义注解,其中每一个【方法】就是声明了一个参数,并不能理解为方法,
参数格式:类型 类型名(); @interface MyAnnotation{int age()default "";}
可以通过default来声明参数的默认值
如果只有一个参数,参数名为value;
注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值;
最后通过【反射】访问数据;
浙公网安备 33010602011771号