完成全局日志:
-
自定义注解类 LogOpt
/**
* 自定义日志注解
*
* @author liqiang
*
*/
@Target(ElementType.METHOD) // 方法注解
@Retention(RetentionPolicy.RUNTIME) // 运行时可见
public @interface LogOpt {
int operateType();// 操作类型
long operateRemark();//操作名称备注
String operateTableName();//操作表
}
-
AOP处理类
//@Service
@Component
@Aspect
public class SystemLogAspect {
/**
* 记录日志通过注解匹配到需要增加日志功能的层方法
*
* @param pjp
* @return
* @throws Throwable
*/
@Around("@annotation(com.zhongkai.jupiter.service.log.LogOpt)")
public Object aroundAdvice(ProceedingJoinPoint pjp) throws Throwable ,Exception {
// 获取方法签名
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
// 获取方法
Method method = methodSignature.getMethod();
// 获取方法上面的注解
LogOpt logOpt = method.getAnnotation(LogOpt.class);
int operateType = logOpt.operateType();//操作的类型
long operateRemark = logOpt.operateRemark();//操作日志的类型
String operateTableName = logOpt.operateTableName();//操作表名
//执行本体=======================================
Object result = pjp.proceed();
//执行结束=======================================
return result;
}
}
-
配置:配置分为spring和mvc两种
spring
<!-- 1.开启注解AOP -->
<aop:aspectj-autoproxy />
mvc
<!-- 1.开启注解AOP -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
一定要添加proxy-target-class="true"! 这是用于通知spring使用cglib而不是jdk的来生成代理方法。 这是controller能被扫描到的关键。
注解引用
@RequestMapping(value = "/submitAuditActivity.wx", produces = {"application/json;charset=UTF-8"})
@ResponseBody
@LogOpt(operateType = 1,operateRemark = 2,operateTableName = "tbl_sov_a**_me**")
public String submitAuditActivity(DetailParams params, Long status, String opinion) {
方法
}
转载博客地址