之前寫了一個AOP形式發送日志給Kafka的demo
日志中有一個字段-擷取方法運作時間
這個要求看起來簡單(其實也簡單)
在高并發的情況下不能使用普通變量long
使用ThreadLocal更合适(防止同時多次請求時資料被改變)
public final static ThreadLocal<Long> s = new ThreadLocal<>();
@Before("@annotation(systemLog)")
public void addTime(SystemLog systemLog) {
this.s.set(System.currentTimeMillis());
}
@After("@annotation(systemLog)")
public void Log(SystemLog systemLog){
System.out.println(System.currentTimeMillis() - this.s.get())
}