Spring AOP错误:错误引用的类型不是注释类型

时间:2016-04-22 09:25:18

标签: java spring spring-aop

我宣布了一个Action的注释

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Action {
    String name();
}

当我尝试制作切入点

@Aspect
@Component
public class LogAspect {
    @Pointcut("@annotation(com.wisely.highlight_spinrg4.ch1.aop.Action)") //it failed here
    public void annotationPointCut() {}

    @After("annotationPointCut()")
    public void after(JoinPoint joinPoint) {
        MethodSignature signature = (MethodSignature)
        joinPoint.getSignature();
        Method method = signature.getMethod();
        Action action = method.getAnnotation(Action.class);
        System.out.println("Annotation Interpreter " + action.name());      
    }

    @Before("execution(*com.wisely.highlight_spring4.ch1.aop.DemoMethodService.*(..))")
    public void before(JoinPoint joinPoint) {
        MethodSignature signature = (MethodSignature)
        joinPoint.getSignature();
        Method method = signature.getMethod();
        System.out.println("Method Interpreter" + method.getName());
    }
}

它引发了一个错误: java.lang.IllegalArgumentException:error引用的类型不是注释类型:com $ wisely $ highlight_spinrg4 $ ch1 $ aop $ Action

我不知道,因为我使用@interface将“Action”设置为注释。有人可以提供一些帮助吗?

1 个答案:

答案 0 :(得分:1)

如果您正在使用Maven,请尝试运行maven clean并安装。我怀疑Action注释与你的一个依赖项中的类或接口具有相同的名称,并且由于某种原因它采用了错误的对象。