本文共 2488 字,大约阅读时间需要 8 分钟。
p6spy p6spy 3.8.7 com.google.guava guava 28.2-jre org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime org.projectlombok lombok true
配置要点:
1. 驱动配置 application.properties
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriverspring.datasource.url=jdbc:p6spy:mysql://localhost:3306/demo_datasource
2. psy配置
# 单行日志logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat# 使用Slf4J记录sqlappender=com.p6spy.engine.spy.appender.Slf4JLogger# 是否开启慢SQL记录outagedetection=true# 慢SQL记录标准,单位秒outagedetectioninterval=2
使用aop实现;
package com.springbootpractice.demo.p6spy.aop;import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;import org.springframework.util.StopWatch;/** * 说明:aop配置 * @author carter * 创建时间: 2020年02月16日 8:49 下午 **/@Aspect@Component@Slf4jpublic class PrintTimeCostAspectJConfig { @SneakyThrows @Around("myPointCut()") public Object around(ProceedingJoinPoint pj) { Object res = null; String methodName = pj.getSignature().toShortString(); StopWatch stopWatch = new StopWatch(methodName); stopWatch.start(); try { res = pj.proceed(); } catch (Throwable ex) { throw ex; } finally { stopWatch.stop(); log.warn("{}执行耗时{}毫秒", methodName, stopWatch.getTotalTimeMillis()); } return res; } @Pointcut("execution(* com.springbootpractice.demo.p6spy.web..*(..))") public void myPointCut() { }}
启用aop注解:
@EnableAspectJAutoProxy(proxyTargetClass = true)
来个效果截图:
通过本片文章,你可以学会:
1. 给代码添加aop切面,增加日志或者打印出方法执行总耗时;
1. 给你的数据持久层打印出所有的sql语句,方便生产环境排查问题;
希望大家平安度过冠疫!每天持续精进!
原创不易,转载请注明出处,欢迎多沟通交流