2016-04-22 2 views
0

Я объявил аннотацию действийSpring AOP Ошибка: Ошибка типа называют не является типом аннотаций

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

Когда я попытался сделать Pointcut

@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 $ wously $ highlight_spinrg4 $ ch1 $ aop $ Действие

Я понятия не имею, поскольку я использовал @interface для установки «Action», как аннотация. Может ли кто-нибудь помочь?

+0

Я предполагаю, что тип находится в названии пакета? 'spinrg4' должен быть' spring4', я думаю ... –

+0

В этом проблема! Большое спасибо! – jiazhong

ответ

0

Попробуйте запустить maven clean и установите, если вы используете Maven. Я подозреваю, что аннотация Action имеет одно и то же имя класса или интерфейса внутри одной из ваших зависимостей, и по какой-то причине он неправильно принимает объект.

Смежные вопросы