使用注解
// Class annotation |
定义一个注解
所有注解都隐式的继承自java.lang.annotation.Annotation
// Controller: |
如何获取带有特定注解(这里用@YourAnnotation注解为例)的类, 使用了org.reflections.Reflections工具类:Reflections reflections = new Reflections("org.test");
Set<Class<?>> classes = reflections.getTypesAnnotatedWith(YourAnnotation.class);
标准注解
JavaSE在java.lang.annotation和javax.annotation包定义了大量注解, 其中4个是元注解, 用于定义一般注解 &描述注解的行为属性.
- @Deprecated: 所有场合,包 & 类 & 方法 & 属性
- @SuppressWarnings: 类 & 方法 & 属性, 阻止某种警告信息,
@SuppressWarnings(value={"unchecked","deprecation"})
- @Override: 只有方法
- @Resources: ?
- @Resource: 可以写在属性上, 和setter方法上, 默认按照名称进行装配
- @PostConstruct 方法, 指明该方法在构造器之后立刻被调用
- @PreDestory 方法, 指明该方法在类被销毁前调用
元注解
- @Target:
@Target(ElementType.TYPE)
// 类, 接口, 枚举, 注解@Target(ElementType.METHOD)
//方法@Target(ElementType.PARAMETER)
//方法参数@Target(ElementType.FIELD)
//字段
- @Retention:
@Retention(RetentionPolicy.SOURCE)
//注解仅存在于源码中, 在class字节码文件中不包含@Retention(RetentionPolicy.CLASS)
// 默认的保留策略, 注解会在class字节码文件中存在, 但运行时无法获得,@Retention(RetentionPolicy.RUNTIME)
// 注解会在class字节码文件中存在, 在运行时可以通过反射获取到
- @Document: 说明该注解将被包含在javadoc中
- @Inherited: 一般在定义注解时使用, 说明这个子类可以继承父类中的这个注解