需求 maven依賴 列印sql 配置要點: 1. 驅動配置 application.properties 2. psy配置 aop列印持久層執行時間 使用aop實現; 啟用aop註解: 小結 來個效果截圖: 通過本片文章,你可以學會: 1. 給代碼添加aop切麵,增加日誌或者列印出方法執行總耗時; ...
需求
maven依賴
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.7</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
列印sql
配置要點:
- 驅動配置 application.properties
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/demo_datasource
- psy配置
# 單行日誌
logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
# 使用Slf4J記錄sql
appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 是否開啟慢SQL記錄
outagedetection=true
# 慢SQL記錄標準,單位秒
outagedetectioninterval=2
aop列印持久層執行時間
使用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
@Slf4j
public 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)
小結
來個效果截圖:
通過本片文章,你可以學會:
- 給代碼添加aop切麵,增加日誌或者列印出方法執行總耗時;
- 給你的數據持久層列印出所有的sql語句,方便生產環境排查問題;
希望大家平安度過冠疫!每天持續精進!
原創不易,轉載請註明出處。