2017-02-12 11 views
0

Я пытаюсь узнать AspectJ, и до сих пор я хорошо привык к концепциям. Поэтому здесь я пытаюсь написать класс аспект для проверки на Object. Но ниже код дает мне adviceDidNotMatch вещь.Почему приведенный ниже код дает мне «adviceDidNotMatch»

before(com.message.pojo.Entity entity) : call(*public com.message.helper.Processor.process(com.message.pojo.Entity)) 
    && args(entity) 
     && target(com.message.helper.MessageProcessor){ 
     ValidationUtil validation = new ValidationUtil(); 
     validation.validate(entity); 
    } 

Теперь все квалифицированные имена здесь я проверяю правильно. Посмотрите скриншот моей структуры проекта java.

[Project Structure

ответ

0

У вас есть небольшая проблема синтаксиса в вашем срезе точек: Вместо call(* public должно быть call(public *, то он работает.

Кстати, вы также можете заменить свои полные имена классов на импорт в родном синтаксисе AspectJ. Полное доменное имя необходимо только в синтаксисе @AspectJ на основе аннотаций. Предполагая, что мы говорим о ValidationAspect с вашего скриншота, для двух классов в одном пакете вам даже не нужны импорт. Попробуйте следующее:

package com.message.helper; 

import com.message.pojo.Entity; 

public aspect ValidationAspect { 
    before(Entity entity) : 
    call(public * Processor.process(Entity)) && 
    args(entity) && 
    target(MessageProcessor) 
    { 
    ValidationUtil validation = new ValidationUtil(); 
    validation.validate(entity); 
    } 
} 
Смежные вопросы