springboot自定义注解如何在切片类中获得注解的值
时间: 2023-02-08 11:23:12 浏览: 508
在 Spring Boot 中使用 AOP 实现自定义注解时,可以在切片类中使用 `JoinPoint` 类的 `getSignature()` 方法和 `getTarget()` 方法获取目标方法的签名和目标类的实例,然后使用反射获取目标方法上的注解对象,最后通过注解对象获取注解的值。
示例代码如下:
```
@Around("@annotation(com.example.annotations.MyAnnotation)")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
String value = annotation.value();
// 其他逻辑
}
```
这里我们使用@Around 注解标记,指定当前切片方法环绕目标方法,并且使用 @annotation(com.example.annotations.MyAnnotation) 指定当前切片方法只处理目标方法上有 com.example.annotations.MyAnnotation 注解的方法。
如果你的注解可以标注在类上,可以使用`getTarget()`获取目标类的实例,再使用反射获取类上的注解
```
@Around("@within(com.example.annotations.MyAnnotation)")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
MyAnnotation annotation = joinPoint.getTarget().getClass().getAnnotation(MyAnnotation.class);
String value = annotation.value();
// 其他逻辑
}
```
这里使用了@within 注解, 指定当前切片方法只处理被 com.example.annotations.MyAnnotation 注解标注的类中的方法。
阅读全文