AOP的日志管理

  1. 编写一个通知类:必须让springmvc能扫描到
    • 添加一个注解@Component交给springmvc容器管理
    • 添加一个注解@Aspect 声明它是通知类
    • 编写一个增强的方法
      • 添加环绕通知注解@Around("exection(* cn.itcast.web.controller..*.*(..))")
      • 执行原来的逻辑
      • 组装日志对象
      • 调用SysLogService中save方法,保存日志
  2. 在springmvc.xml中开启aop的自动代理
@Component
@Aspect
public class SysLogAspect {

    @Autowired
    HttpSession session;

    @Autowired
    HttpServletRequest request;

    @Autowired
    SysLogService sysLogService;

    @Around("execution(* cn.itcast.web.controller..*.*(..))")
    public Object saveSysLog(ProceedingJoinPoint pjp) throws Throwable {

        //让目标方法执行
        Object result = pjp.proceed();

        //组装日志对象
        SysLog sysLog = new SysLog();
        //获取当前登陆的用户
        User loginUser = (User) session.getAttribute("loginUser");
        if (loginUser!=null) {
            sysLog.setUserName(loginUser.getUserName());
            sysLog.setIp(request.getLocalAddr());
            sysLog.setTime(new Date());

            //获取请求的方法
            MethodSignature signature = (MethodSignature) pjp.getSignature();//获取方法签名
            Method method = signature.getMethod();

            sysLog.setMethod(method.getName());
            //设置方法的描述,就是@RequestMapping注解的name属性值
            RequestMapping anno = method.getAnnotation(RequestMapping.class);
            sysLog.setAction(anno.name());

            sysLog.setCompanyId(loginUser.getCompanyId());
            sysLog.setCompanyName(loginUser.getCompanyName());

            //保存日志
            sysLogService.save(sysLog);
        }
        return result;
    }
}```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值