我有一个CUDService接口,它在我的项目中保存创建,更新和删除操作。我的所有服务都实现了该接口。 CUDServiceImpl是一个实现CUDService的抽象类,具有公共方法(创建,更新,删除)。 例如,我有一个带有两个方法的StudentService接口。
public interface StudentService extends CUDService,Logged{
addMark();
deleteMark();
}
public class StudentServiceImpl extends CUDServiceImpl implements StudentService{
@Override addmark...
@Override deletemark..
}
注意Logged界面!它是我创建的空接口,用于标记我希望aspectJ标记为日志记录的服务。
aspectJ切入点的定义如下:
执行(* com.history.Logged +。*(..))
这适用于addMark(),deleteMark()方法但它不适用于在CUDServiceImpl中定义的创建,更新,删除方法! 如果我在StudentServiceImpl类中覆盖这些方法,它将起作用:
@Override create(){
super.create();
}
但我想让它工作而不必覆盖CUDService的所有方法..提前谢谢!
答案 0 :(得分:0)
CUDServiceImpl不会实现Logged接口,因此其方法不会被aspectj交叉切割。这就是为什么你必须在实现它的类中重写它..