• 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
  • 相关阅读:
    113. 求坐上公交的最晚时间(考察贪心算法)
    新能源汽车为什么越来越受欢迎?它的未来发展前景究竟如何?火象 2022-06-28 10:07
    你与年薪百万的项目经理,可能就差一个字母
    数据湖浅析(以hudi为例)
    Zookeeper集群 + Kafka集群
    基于AMD EPYC服务器的EDA芯片设计解决方案
    ROS2入门之基本介绍
    新手如何快速用vue导入GLTFLoader模型
    【R语言文本挖掘】:主题模型(LDA)
    学编程:Python入门考级必备[8]
  • 原文地址:https://blog.csdn.net/weixin_49267169/article/details/128035213