У меня есть интерфейс CUDService, который содержит операции создания, обновления и удаления в моем проекте. Все мои сервисы реализуют этот интерфейс. CUDServiceImpl — это абстрактный класс, который реализует CUDService и имеет общедоступные методы (создание, обновление, удаление). Например, у меня есть интерфейс StudentService с двумя методами.
public interface StudentService extends CUDService,Logged{
addMark();
deleteMark();
}
public class StudentServiceImpl extends CUDServiceImpl implements StudentService{
@Override addmark...
@Override deletemark..
}
Обратите внимание на интерфейс Logged! Это пустой интерфейс, который я создал для маркировки Сервисов, которые я хочу, чтобы аспект J помечал для ведения журнала.
pointcut аспекта J определяется следующим образом:
выполнение(* com.history.Logged+.*(..))
и это работает для методов addMark(),deleteMark(), НО это не работает для методов create,update,delete, определенных в CUDServiceImpl! Это сработает, если я переопределю эти методы в классе StudentServiceImpl следующим образом:
@Override create(){
super.create();
}
но я хотел бы, чтобы это работало без переопределения всех методов из CUDService. Заранее спасибо!