基于 aop service层参数log

基于 aop service层参数log

import cn.hutool.json.JSONUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;


@Aspect
@Component
public class ServiceLogAspect {

    private static final Logger log = LoggerFactory.getLogger(ServiceLogAspect.class);

    /**
     * 以 controller 包下定义的所有请求为切入点
     */
    @Pointcut("execution(public * com.example.demo.service.impl..*.*(..))")
    public void serviceLog() {
    }


    /**
     * 环绕
     *
     * @param proceedingJoinPoint 切入点
     * @return
     * @throws Throwable
     */
    @Around("serviceLog()")
    public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        Signature signature = proceedingJoinPoint.getSignature();
        String methodName = signature.getName();
        // 获取参数
        Object[] args = proceedingJoinPoint.getArgs();
        log.info("开始<{}>数据:{}", methodName, JSONUtil.toJsonStr(args));
        Object result = proceedingJoinPoint.proceed();
        log.info("结束<{}>数据:{}", methodName, result);
        return result;
    }
}

 

posted @ 2022-05-26 10:24  把猫给我  阅读(56)  评论(0)    收藏  举报