spring-boot - 类的方面注释
问题描述
我有一个自定义注释,在 Spring Boot 中使用 AOP 处理。当我把它放在一个方法上面时它工作得很好,但是当我把它放在类上面时我无法提取它的值:(
注解
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface UserAuthorization {
UserRoleEnum[] userRoles();
String paramName() default "userDetails";
String errorMessage() default "NOT AUTHORIZED";
}
方面:
@Aspect
@Component
public class UserAuthorizationAspect {
@Around("@annotation(UserAuthorization)")
public Object validateAuthoritiesAspect(ProceedingJoinPoint pjp) throws Throwable {
MethodSignature signature = (MethodSignature) pjp.getSignature();
UserAuthorization userAuthorization = signature.getMethod().getAnnotation(UserAuthorization.class);
// Some code
}
}
解决方案
- 更改您的方面以检查该类是否有注释
signature.getMethod().getDeclaringClass()
.getAnnotation(UserAuthorization.class)
- 更改您的注释以支持类级别和方法级别的注释
@Target({ElementType.TYPE, ElementType.METHOD})
推荐阅读
- python-3.x - 如何在Python循环中提取和分析字典中的数据
- android - Instant App - 安装完整版弹出窗口?
- unix - 存储数学表达式的输出
- google-maps - 出现以下带有 google maps 错误的 JavaScript:NotLoadingAPIFromGoogleMapsError
- react-native - 在 Android/iOS 原生应用中嵌入 React Native 应用
- python-3.x - 为什么我得到一个 KeyError: 'title' with feedparser?
- opengl - 有没有使用 glDrawArrays() 绘制多个不同大小的点的无着色方法?
- php - Illuminate\Routing\Route 类的对象无法转换为字符串
- php - 连接问题:SSL + WebSocket(socketo.me) + Nginx
- node.js - REST 调用适用于 axios,但不适用于 Angular 5 项目中的 HttpClient