日期:2014-05-16  浏览次数:20915 次

spring日记(五):基于@AspectJ和Schema的AOP

JDK5.0注解基础知识:

先定义一个简单的注解:

package com.springzoo.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface NeedTest{
	boolean value() default false;
}

Java新语法规定使用@interface修饰定义注解类,一个注解可以拥有多个成员,成员声明和接口方法声明类似,这里,我们仅仅定义了一个成员,成员有几个限制:

1,成员以无入参无跑出异常方式声明

2,可以通过default指定一个默认值

3,成员类型只能是基本类型以及其包装类、String、Class、enums、注解类型,以及由以上类型的数组类型。

上面的@Retention和@Target称为Java的元注解,它们被Java编译器使用哦,会对注解类的行为产生影响。@Retention(RetentionPolicy.RUNTIME)表示这个注解可以在运行期间被JMV读取。

注解保留期限解释:

* SOURCE:注解信息仅保留在目标类代码的原文件中,对应的字节码文件将不再保留;

* CLASS:注解信息将进入目标类代码的字节码文件中,但类加载器加载字节码文件时不会将注解加载到JVM中,也就是说运行期间不能获得注解信息。

* RUNTIME:注解信息在目标类加载到JMV后依然保留,在运行期间可以通过反射机制读取类中的注解信息。