AspectJ操作日志记录

时间:2012-03-29 12:53:38

标签: logging interface aspectj

我有一个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的所有方法..提前谢谢!

1 个答案:

答案 0 :(得分:0)

CUDServiceImpl不会实现Logged接口,因此其方法不会被aspectj交叉切割。这就是为什么你必须在实现它的类中重写它..