注解的应用
公司项目需求,自己做一个对HBase应用ORM思想,封装DAO,应用到注解。这里复习一下注解的使用。
1.注解的定义::注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
比较重要的是下一个知识点自定义注解:
我们需要将它声明为@interface,如下例:
@Target 是说明注解应用的场景,@Retention是说明注解在什么级别上报存
public @interface 注解名
自己测试一下注解的使用:
随便写了一个自定义的注解,这个注解时类注解
下面是属性注解的使用:
为什么使用注解:
“对类,方法,属性进行的一种标示,一种注释
(注意,这个里注释不是为了让我们开发或维护人员阅读更方便,而是为JVM看呢),通过这些标示,Java虚拟机可以完成这些标示对应的功能。”
使用注解和配置文件的优缺点:
什么时候用xml
1.外部jar包依赖bean配置
2.用注解无法实现,或者用注解无法轻易实现的情形
3.项目组内部达成一致的约定的地方
4.特殊的配置(如:定义一个map)
优:容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过xml配置会方便后人理解整个系统的架构
缺:比较繁琐,类型不安全,配置形态丑陋,配置文件过多的时候难以管理
什么时候用注解
除了上面4点,其他情况都可以用
优:方便,简洁,配置信息和 Java 代码放在一起,有助于增强程序的内聚性。
缺:分散到各个class文件中,所以不宜维护
比较重要的是下一个知识点自定义注解:
我们需要将它声明为@interface,如下例:
@Target 是说明注解应用的场景,@Retention是说明注解在什么级别上报存
public @interface 注解名
自己测试一下注解的使用:
随便写了一个自定义的注解,这个注解时类注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnntation {
/**
* Default family name.
*
* @return default family.
*/
public String defaultFamily() default "abc";
}
测试类代码:
@TestAnntation
public class Test {
public static void main(String[] args) {
name();
}
public static void name() {
Test test = new Test();
TestAnntation ta = (test.getClass()).getAnnotation(TestAnntation.class);
if (ta!=null) {
System.out.println(ta.defaultFamily());
}
}
}
输出结果是:abc
下面是属性注解的使用:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnntation {
/**
* Default family name.
*
* @return default family.
*/
public String defaultFamily() default "abc";
}
测试类代码:
public class Test {
@TestAnntation
private String nameString;
public static void main(String[] args) {
Test test = new Test();
Field[] fields = test.getClass().getDeclaredFields();
name(fields[0]);
}
public static void name(Field field) {
TestAnntation ta = field.getAnnotation(TestAnntation.class);
if (ta!=null) {
System.out.println(ta.defaultFamily());
}
}
}
为什么使用注解:
“对类,方法,属性进行的一种标示,一种注释
(注意,这个里注释不是为了让我们开发或维护人员阅读更方便,而是为JVM看呢),通过这些标示,Java虚拟机可以完成这些标示对应的功能。”
使用注解和配置文件的优缺点:
什么时候用xml
1.外部jar包依赖bean配置
2.用注解无法实现,或者用注解无法轻易实现的情形
3.项目组内部达成一致的约定的地方
4.特殊的配置(如:定义一个map)
优:容易编辑,配置比较集中,方便修改,在大业务量的系统里面,通过xml配置会方便后人理解整个系统的架构
缺:比较繁琐,类型不安全,配置形态丑陋,配置文件过多的时候难以管理
什么时候用注解
除了上面4点,其他情况都可以用
优:方便,简洁,配置信息和 Java 代码放在一起,有助于增强程序的内聚性。
缺:分散到各个class文件中,所以不宜维护