✅PmHub自定义注解加 AOP 实现服务接口鉴权和内部认证(👍必看)
你好呀,我是苍何!
欢迎来到面试系列!这篇文章主要讲 PmHub 如何实现自定义鉴权和认证,里面会涉及到很多的技术知识点,也是面试经常问的,结合项目掌握好本篇,对咱们会有很大的帮助。
以下描述你可以直接写进简历,也可以根据你的理解进行优化。
- 自定义注解加 AOP 实现服务接口鉴权和内部认证
注解
何谓注解?
在Java中,注解(Annotation)是一种特殊的语法,用@符号开头,是 Java5 开始引入的新特性,可以看作是一种特殊的注释,主要用于修饰类、方法或者变量,提供某些信息供程序在编译或者运行时使用。
拿熟悉 的@Override 注解来看。
package java.lang;
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
JDK 内置了很多注解(比如 @Override、@Deprecated),其他框架如 Spring 也内置了不少注解,我们也可以自定义注解。
注解的作用
注解的主要作用是提供元数据,具体可以用于以下几个方面:
- 编译时检查:如@Override可以帮助编译器检查该方法是否正确重写了父类的方法。
- 代码生成:如@Entity可以告诉框架生成对应的数据库表。
- 运行时处理:如@Deprecated可以在运行时提醒开发者某个方法或类已经不建议使用。
注解的解析方法有哪几种?
注解只有被解析之后才会生效,常见的解析方法有两种:
- 编译期直接扫描:编译器在编译 Java 代码的时候扫描对应的注解并处理,比如某个方法使用@Override 注解,编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。
- 运行期通过反射处理:像框架中自带的注解(比如 Spring 框架的 @Value、@Component)都是通过反射来进行处理的。也是我们自定义注解中使用最多的。
如何自定义注解?
自定义注解主要包括以下几个步骤:
- 定义注解:使用
@interface关键字定义注解。 - 注解元素:在注解中定义元素,就像在接口中定义方法。
- 元注解:使用元注解(如
@Retention、@Target等)来描述注解的行为。
1. 定义注解
可以使用@interface关键字来定义一个注解。下面是一个简单的例子:
public @interface MyAnnotation {
String value();
int number() default 0;
}
在上面的例子中,MyAnnotation注解有两个元素:value和number。其中,number有一个默认值0。
2. 元注解
元注解是注解的注解,用来描述注解本身的行为。常见的元注解有:
- @Retention:指明注解的保留策略。
- @Target:指明注解的使用目标。
@Retention
@Retention指定了注解的生命周期,它有三个取值:
- RetentionPolicy.SOURCE:注解只在源代码中存在,编译后就不存在了。
- RetentionPolicy.CLASS:注解在编译后会存在于.class文件中,但在运行时不会存在。
- RetentionPolicy.RUNTIME:注解在运行时依然存在,可以通过反射读取。
@Target
@Target指定了注解可以使用的地方,如类、方法、字段等。常见的取值有:
- ElementType.TYPE:用于类、接口、枚举、注解类型。
- ElementType.FIELD:用于字段或属性。
- ElementType.METHOD:用于方法。
- ElementType.PARAMETER:用于参数。
- ElementType.CONSTRUCTOR:用于构造函数。
- ElementType.LOCAL_VARIABLE:用于局部变量。
未能定位到原文的划线
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复