aop

编写日志类

@Aspect  //配置了aop逻辑
@Component //非Controller,Service Repository
public class LogAspect {
    private Logger l = LoggerFactory.getLogger(LogAspect.class);

    public LogAspect() {
        l.info("LogAspect 无参构造方法执行");
    }

    //要对所有的Controller的方法进行配置
    //指定包名 controller 下以及它的所有子包
    //
    @Around(value = "execution(* com.csq.web.controller..*.*Controller.*(..))")
    public Object writeLog(ProceedingJoinPoint jp) {//切点
        // jp表示Controller中的任意方法 toList toAdd toUpdate add update delete
        //逻辑
        Object result = null;//返回一个表示页面的字符串,也可通是json数据
        try {
            //前置
            result = jp.proceed();//执行
            //后置
            //保存日志
            l.info("切面:writeLog");
        } catch (Throwable e) {
            //异常
        } finally {
            //最终
        }
        return result;
    }
}

开启aop自动管理

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd">
       <aop:aspectj-autoproxy/>

保存方法

@Autowired
ISysLogService iSysLogService;

//登录成功之后session中是保存一个user对象的
@Autowired
HttpSession session;

//request对象可以直接获取对方浏览器的IP
@Autowired
HttpServletRequest request;
private void saveSysLog(ProceedingJoinPoint jp) {
    //将一个表单数据保存在javaBean中,再将javaBean存到数据库
    SysLog sysLog = new SysLog();

    User user = (User) session.getAttribute("loginUser");
    if(user !=null){
        //设置登录用户信息
        sysLog.setUserName(user.getUserName());
        //设置企业信息
        sysLog.setCompanyId(user.getCompanyId());
        sysLog.setCompanyName(user.getCompanyName());
    }

    //IP地址  request.getLocalAddr()获取请求中的ip地址
    sysLog.setIp(request.getLocalAddr());
    //设置记录时间
    sysLog.setTime(new Date());

    //执行的方法名称  jp.getSignature() 当前执行的方法 toList
    sysLog.setMethod(jp.getSignature().getName());

    //执行的类名称 jp.getTarget()目标对象
    sysLog.setAction(jp.getTarget().getClass().getName());

    l.info("saveSysLog sysLog "+sysLog);
    iSysLogService.saveSysLog(sysLog);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值