JAVA-自定义注解实现接口权限控制,一步一步记录
提示:通过自定义接口实现权限控制
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
今天来学习下如何做权限控制。
提示:以下是本篇文章正文内容,下面案例可供参考
一、创建一个Java注解(Annotation)的定义
这里我们定义一个名叫 AnyRoles 的接口,定义方法如下:
其中 @Target 和 @Retention 和 @Document 这3个称为元注解Meta-Annotation)
元注解(Meta-Annotation)是指注解的注解,即用于修饰其他注解的注解。元注解在Java中主要用于控制注解的行为和属性。
@Target({
ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Document
public @interface AnyRoles {
RoleEnum[] role();
}
@Target({ElementType.METHOD, ElementType.TYPE}):
这个元注解指定了AnyRoles注解可以被应用于哪些程序元素。在这个例子中,AnyRoles可以用于标注方法(METHOD)和类、接口等类型声明(TYPE)。
@Retention(RetentionPolicy.RUNTIME):
这个元注解定义了AnyRoles注解的保留策略为运行时(RUNTIME)。这意味着该注解将在编译后的字节码文件中存在,并且可以通过反射在运行时访问到。
(以下作为@Retention了解,不想了解可跳过往后看)
在Java中,注解(Annotation)的@Retention策略用来指定注解的保留策略,即注解信息在什么级别可用。@Retention是一个元注解,它定义了注解的保留级别。@Retention策略有三个选项:SOURCE、CLASS和RUNTIME。下面分别解释这三个选项的区别:
SOURCE(源码级别保留):
注解仅在源码中保留,当Java文件被编译成.class文件时,注解信息会被丢弃。
这种保留策略适用于编译时处理的场景,比如编译器在编译时需要读取注解信息,但运行时不需要这些信息,比如代码检查、编译时错误提示等,选择SOURCE。
例子:@Override注解,它用于检查方法是否正确地覆盖了父类的方法。
CLASS(类文件级别保留):
注解在源码和.class文件中都保留,但在Java虚拟机(JVM&#