什么是自定义注解 (Custom Annotations)?
Java 注解是从 Java 5 开始引入的,它为我们提供了一种元编程的方法,允许我们在不改变代码逻辑的情况下为代码添加元数据。这些元数据可以在编译时或运行时通过反射被访问。
自定义注解就是用户定义的,用于为代码提供元数据的注解。例如,本小节中自定义的 @ApiOperationLog
注解,它用来表示一个方法在执行时需要被记录日志。
什么是 AOP (面向切面编程)?
AOP(Aspect-Oriented Programming,面向切面编程)是一个编程范式,它提供了一种能力,让开发者能够模块化跨多个对象的横切关注点(例如日志、事务管理、安全等)。
主要概念包括:
- 切点 (Pointcuts): 定义在哪里应用切面(即在哪里插入横切关注点的代码)。
- 通知 (Advices): 定义在特定切点上要执行的代码。常见的通知类型有:前置通知、后置通知、环绕通知等。
- 切面 (Aspects): 切面将切点和通知结合起来,定义了在何处和何时应用特定的逻辑。
例如,使用AOP,我们可以为所有使用 @ApiOperationLog
注解的方法自动添加日志逻辑,而不需要在每个方法中手动添加。
添加依赖
在项目 中的 pom.xml
文件中,添加 jackson
工具,它用于将出入参转为 json
字符串:
<!-- 版本号统一管理 -->
<properties>
...省略
<jackson.version>2.15.2</jackson.version>
</properties>
<!-- 统一依赖管理 -->
<dependencyManagement>
<dependencies>
...省略
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
因为日志切面属于前台、后台管理接口通用的功能,所以和该功能相关代码可以统一放置于 xx-module-common
公共模块中。
打开 xx-module-common
公共模块中的 pom.xml
, 引用具体依赖: