示例:通过注解实现AOP切面接口日志记录
一、定义注解
1 |
|
@Target:用于描述注解的使用范围,该注解可以使用在什么地方
- ElementType.TYPE 应用于类、接口(包括注解类型)、枚举
- ElementType.FIELD 应用于属性(包括枚举中的常量)
- ElementType.METHOD 应用于方法
- ElementType.PARAMETER 应用于方法的形参
- ElementType.CONSTRUCTOR 应用于构造函数
- ElementType.LOCAL_VARIABLE 应用于局部变量
- ElementType.ANNOTATION_TYPE 应用于注解类型
- ElementType.PACKAGE 应用于包
@Retention:表明该注解的生命周期
- RetentionPolicy.SOURCE 编译时被丢弃,不包含在类文件中
- RetentionPolicy.CLASS JVM加载时被丢弃,包含在类文件中,默认值
- RetentionPolicy.RUNTIME 由JVM 加载,包含在类文件中,在运行时可以被获取到
@Documented:表明该注解标记的元素可以被Javadoc 或类似的工具文档化
二、定义切面类
2.1 切面类,处理并记录接口日志
1 |
|
三、spel表达式获取请求参数
3.1 定义接口
1 |
|
3.1 spel工具类,获取方法参数
1 | public class SpelUtil { |