下文笔者讲述Java自定义注解的方法及示例分享,如下所示
自定义注解简介
注解:
可添加到java源代码中的元数据,方法、类、参数和包
用于修饰这些对象
代码在编译或运行时,对这些特殊标记进行特殊的处理
我们将这种标记称之为“注解”
自定义注解所需要的信息
修饰符:
访问修饰符必须为public
不写的话默认为public;
关键字:
关键字为@interface;
注解名称:
注解名称为自定义注解的名称,使用时候会用到;
注解类型元素:
注解类型元素是注解中的内容
例:
@Retention(RetentionPolicy.Runtime)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
public @interface TestData{
/**
* 暂时没用
* @return
*/
String value() default "";
/**
* 配置菜单的组件路径,用于数据权限
*/
String pageComponent() default "";
}
自定义注解用到的元注解
JDK中元注解
有@Targert,@Rentention,@Document,@Inherited用来修饰注解
@Target:
该注解可以应用的java元素类型
Target类型 | 备注 |
ElementType.TYPE | 应用于类、接口(包括注解类型)、枚举 |
ElementType.METHOD | 应用于方法 |
ElementType.FIELD | 应用于属性(包括枚举中的常量) |
ElementType.CONSTRUCTOR | 应用于构造函数 |
ElementType.Package | 应用于包 |
ElementType.Parameter | 应用于方法的形参 |
ElementType.local_variable | 应用于局部变量 |
ElementType.AnnotationType | 应用于注解的类型 |
>@Retention:注解指生命周期类型简介
生命周期类型 | 备注 |
RetentionPolicy.RUNTIME | 由jvm加载,包含在类文件中,在运行时可以被获取到 |
RetentionPolicy.Class | jvm加载时丢弃,包含在类文件中,默认值 |
RetentionPolicy.Source | 编译时被丢弃,不包含在类文件中 |
@Doucument:指注解的元素可以被javadoc或类似的根据文档化
@Inherited:表明使用了@Inherited注解的元素,所标记的子类也拥有这个注解
自定义注解的示例
@RequestMapping(value = "/test")
@TestData(pageComponent = "download/test")
public ModelAndView test(HttpServletRequest request) {
return super.test(request,"测试");
}