package com.java110.core.trace;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.dto.trace.TraceParamDto;
|
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;
|
|
/**
|
* trace log api aop
|
*/
|
@Component
|
@Aspect
|
public class Java110TraceLogAop {
|
|
@Pointcut("@annotation(com.java110.core.trace.Java110TraceLog) || execution(public * com.java110..*.*InnerServiceSMOImpl.*(..))")
|
public void dataProcess() {
|
}
|
|
//环绕通知,环绕增强,相当于MethodInterceptor
|
@Around("dataProcess()")
|
public Object around(ProceedingJoinPoint pjp) throws Throwable {
|
Object out = null;
|
TraceParamDto traceParamDto = new TraceParamDto();
|
JSONObject paramIn = new JSONObject();
|
JSONObject paramOut = new JSONObject();
|
|
Object[] args = pjp.getArgs();
|
for (int paramIndex = 0; paramIndex < args.length; paramIndex++) {
|
paramIn.put("param" + paramIndex, args[paramIndex]);
|
}
|
traceParamDto.setReqParam(paramIn.toJSONString());
|
out = pjp.proceed();
|
if (paramOut != null) {
|
paramOut.put("param", out);
|
} else {
|
paramOut.put("param", new JSONObject());
|
}
|
traceParamDto.setResParam(paramOut.toJSONString());
|
Java110TraceFactory.putParams(traceParamDto);
|
return out;
|
}
|
}
|