java自定义注解及其使用

自定义注解

一、什么是注解?

注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。

二、自定义注解需要的基本元素

自定义注解需要用到的东西:

修饰符:访问修饰符必须为public,不写的话默认为public;

关键字:关键字为@interface;

注解名称:注解名称为自定义注解的名称,使用时候会用到;

注解类型元素:注解类型元素是注解中的内容,可以理解成自定义接口的实现部分;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
public @interface PermissionData{
	/**
	 * 暂时没用
	 * @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.Classjvm加载时丢弃,包含在类文件中,默认值
RetentionPolicy.Source编译时被丢弃,不包含在类文件中

@Doucument:表明该注解的元素可以被javadoc或类似的根据文档化

@Inherited:表明使用了@Inherited注解的元素,所标记的子类也拥有这个注解

自定义注解的使用:

/**
    * 导出excel
    *
    * @param request
    * @param hrAttendaceExtraWork
    */
    @RequestMapping(value = "/exportXls")
	@RequiresPermissions("hrAttendaceExtraWork:exportXls")
	@PermissionData(pageComponent = "staffManage/attendanceMange/HrAttendaceExtraWorkList")
    public ModelAndView exportXls(HttpServletRequest request, HrAttendaceExtraWork hrAttendaceExtraWork) {
        return super.exportXls(request, hrAttendaceExtraWork, HrAttendaceExtraWork.class, "加班申请");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值