@Target,@Retention,@Documented,
上面这集个注解是J,ava自带的,从1.5版本开始有的
ElementType,RetentionPolicy,也是J,ava的内部类。
下面简单标记下各个都是干嘛的:
/**
* @Target能标注在注解类型上
* ElementType
* TYPE
* 类和接口
* FIELD
* 属性
* METHOD
* 方法
* PARAMETER
* 方法中的参数
* CONSTRUCTOR
* 构造器
* ANNOTATION_TYPE
* 注解类型
* PACKAGE
* 包
* 指明了当前的注解类能标注在类的哪些部位
* @Target({ElementType.TYPE,ElementType.METHOD})
* 说明这个被标注的注解,既可以标注在类上也可以标注在方法上
*/
@Target(ElementType.TYPE)
/**
* 是否让@Description这个注解出现在帮助文档中
*/
@Documented
/**
* @Retention
* 说明@Description注解的作用域
* RetentionPolicy.SOURCE
* @Description这个注解在源文件中起作用
* RetentionPolicy.CLASS
* @Description这个注解即在源文件中起作用又在class文件中起作用
RetentionPolicy.RUNTIME
@Description在源文件、class文件、运行的过程中都起作用
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface Description {
String value();//属性
}
下面放个s,pring MVC的controler的注解类如下所示:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any
*/
String value() default "";
}
至于组件是什么东西,后话啦。