自定义注解:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OperateHis {
int operateType() default 0;
}
切面:
@Aspect
@Component
public class OperateHisAspect {
@Pointcut(value = "@annotation(cn.zj.pubinfo.ydd.comm.web.annotation.OperateHis)")
private void pointcut() {
}
@AfterReturning(value = "pointcut() && @annotation(operateHis)", returning = "result")
public void afterReturning(JoinPoint point,Object result,OperateHis operateHis) {
ShiroUser sUser =null;
if (SecurityUtils.getSubject() == null || SecurityUtils.getSubject().getPrincipal() == null) {
sUser=null;
}else{
sUser=(ShiroUser) SecurityUtils.getSubject().getPrincipal();
String userName = sUser.getUserName();
ExportLog log = new ExportLog();
log.setEx_username(userName);
log.setEx_module(operateHis.operateType());
CallServiceUtil.callDataService("exportLogService", "insert",
new Object[] { log }, new Class[] { ExportLog.class });// 记录导出日志
}
}
}
然后在方法上加上注解,如图:
最后不要忘了在spring配置文件里面 加上对于切面类的扫描