【问题标题】:Aspect annotation for class类的方面注释
【发布时间】:2020-07-02 14:53:27
【问题描述】:

我有一个自定义注解,它在 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
    }

}

【问题讨论】:

  • @KavithakaranKanapathippillai 这行得通!!!

标签: spring-boot annotations spring-aspects


【解决方案1】:
  • 更改方面以检查类是否有注释
   signature.getMethod().getDeclaringClass()
                        .getAnnotation(UserAuthorization.class)
  • 更改您的注释以支持类级别和方法级别的注释
   @Target({ElementType.TYPE, ElementType.METHOD})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多