• java自定义注解及其使用


    自定义注解

    一、什么是注解?

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

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

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

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

    关键字:关键字为@interface;

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

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

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.TYPE,ElementType.METHOD})
    @Documented
    public @interface PermissionData{
    	/**
    	 * 暂时没用
    	 * @return
    	 */
    	String value() default "";
    	
    	
    	/**
    	 * 配置菜单的组件路径,用于数据权限
    	 */
    	String pageComponent() default "";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    三、自定义注解用到的元注解

    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, "加班申请");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    字节秋招高频算法汇总(基础篇)
    深度学习入门-卷积神将网络(CNN)
    微信小程序入门---超详细教程
    nginx502常见502错误问题解决办法
    【Linux信号专题】二、信号是如何产生的
    Zabbix第二部分:基于Proxy分布式部署实现Web监控和Zabbix HA集群的搭建
    新火种AI|Claude 3.5一夜封王超越GPT-4o!留给OpenAI的时间真的不多了...
    会员营销中,沉寂会员的三种运营策略
    crypto:Rabbit
    通过部署流行 Web 框架掌握 Serverless 技术
  • 原文地址:https://blog.csdn.net/weixin_49267169/article/details/128035213