一、项目要求
在实习项目中,遇到一个需求,要写文档资料管理、公告管理和系统日志。其中系统日志要将文档资料管理和公告管理中的操作记录下来并插入数据库的表中,为了解耦合,一开始拟定用过滤器或者AOP来做,后来觉得AOP经常听到,但是没有实操过,所以正好借此机会学习一下,开搞!
AOP基础知识就不写了,因为我要获取返回值来判断属于什么操作,所以我用的是@AfterReturning
主要代码如下:
private final String ExpGetResultDataPonit = "execution(* com.capol.train.server.web.controller.*.*(..))";
/**
* 根据返回结果插入日志数据
* @param joinPoint
* @param keys
*/
@AfterReturning(value = ExpGetResultDataPonit, returning = "keys")
public void insertLog(JoinPoint joinPoint, Object keys){
if(keys instanceof ObjectResponse){
ObjectResponse response = (ObjectResponse)keys;
if(response.getData() instanceof NoticeVO) {
noticeLog((NoticeVO)response.getData());
}
if(response.getData() instanceof ProFileVO){
proLog((ProFileVO)response.getData());
}
if(response.getData() instanceof PublicFileVO){
publicLog((PublicFileVO)response.getData());
}
}
}