mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-30 03:01:53 +08:00
将 bizType 和 bizId 进行封装,实现 SkyWalking Tag 检索
This commit is contained in:
parent
3018866c62
commit
4cc45d73fb
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iocoder.dashboard.common.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
|
@Target({ElementType.METHOD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Inherited
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印业务流水号/业务类型注解
|
||||||
|
*
|
||||||
|
* @author 麻薯
|
||||||
|
*/
|
||||||
|
public @interface BizTracing {
|
||||||
|
String BIZ_ID = "bizId";
|
||||||
|
String BIZ_TYPE = "bizType";
|
||||||
|
|
||||||
|
String bizId() default "NULL_ID";
|
||||||
|
|
||||||
|
String bizType() default "NULL_TYPE";
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package cn.iocoder.dashboard.common.annotation;
|
||||||
|
|
||||||
|
import cn.iocoder.dashboard.util.sping.SpElUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.skywalking.apm.toolkit.trace.ActiveSpan;
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.Around;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.aspectj.lang.annotation.Before;
|
||||||
|
import org.aspectj.lang.annotation.Pointcut;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
|
@Aspect
|
||||||
|
@Slf4j
|
||||||
|
@Configuration
|
||||||
|
public class BizTracingAop {
|
||||||
|
|
||||||
|
@Around(value = "@annotation(bizTracing)")
|
||||||
|
public void tagBizInfo( ProceedingJoinPoint joinPoint, BizTracing bizTracing) {
|
||||||
|
String bizId = SpElUtil.analysisSpEl(bizTracing.bizId(), joinPoint);
|
||||||
|
String bizType = SpElUtil.analysisSpEl(bizTracing.bizType(), joinPoint);
|
||||||
|
log.info("accept biz: bizId[{}], bizType[{}].", bizId, bizType);
|
||||||
|
ActiveSpan.tag(BizTracing.BIZ_ID, bizId);
|
||||||
|
ActiveSpan.tag(BizTracing.BIZ_TYPE, bizType);
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@ package cn.iocoder.dashboard.framework.tracer.core.util;
|
|||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.dashboard.framework.tracer.core.ITrace;
|
import cn.iocoder.dashboard.framework.tracer.core.ITrace;
|
||||||
import cn.iocoder.dashboard.util.bean.SpringUtil;
|
import cn.iocoder.dashboard.util.sping.SpringBeanUtil;
|
||||||
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
|
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -61,7 +61,7 @@ public class TracerUtils {
|
|||||||
* @return ITrace
|
* @return ITrace
|
||||||
*/
|
*/
|
||||||
private static ITrace getTracer() {
|
private static ITrace getTracer() {
|
||||||
return SpringUtil.getBean(ITrace.class);
|
return SpringBeanUtil.getBean(ITrace.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
40
src/main/java/cn/iocoder/dashboard/util/sping/SpElUtil.java
Normal file
40
src/main/java/cn/iocoder/dashboard/util/sping/SpElUtil.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package cn.iocoder.dashboard.util.sping;
|
||||||
|
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
|
import org.springframework.core.DefaultParameterNameDiscoverer;
|
||||||
|
import org.springframework.expression.EvaluationContext;
|
||||||
|
import org.springframework.expression.Expression;
|
||||||
|
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||||
|
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
public class SpElUtil {
|
||||||
|
|
||||||
|
private SpElUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String analysisSpEl(String spElString, ProceedingJoinPoint joinPoint) {
|
||||||
|
SpelExpressionParser parser = new SpelExpressionParser();
|
||||||
|
DefaultParameterNameDiscoverer nameDiscoverer = new DefaultParameterNameDiscoverer();
|
||||||
|
// 通过joinPoint获取被注解方法
|
||||||
|
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
|
||||||
|
Method method = methodSignature.getMethod();
|
||||||
|
// 使用spring的DefaultParameterNameDiscoverer获取方法形参名数组
|
||||||
|
String[] paramNames = nameDiscoverer.getParameterNames(method);
|
||||||
|
// 解析过后的Spring表达式对象
|
||||||
|
Expression expression = parser.parseExpression(spElString);
|
||||||
|
// spring的表达式上下文对象
|
||||||
|
EvaluationContext context = new StandardEvaluationContext();
|
||||||
|
// 通过joinPoint获取被注解方法的形参
|
||||||
|
Object[] args = joinPoint.getArgs();
|
||||||
|
// 给上下文赋值
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
context.setVariable(paramNames[i], args[i]);
|
||||||
|
}
|
||||||
|
Object value = expression.getValue(context);
|
||||||
|
return value == null ? "null" : value.toString();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package cn.iocoder.dashboard.util.bean;
|
package cn.iocoder.dashboard.util.sping;
|
||||||
|
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
|
|
||||||
@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class SpringUtil implements ApplicationContextAware {
|
public class SpringBeanUtil implements ApplicationContextAware {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spring context
|
* Spring context
|
Loading…
Reference in New Issue
Block a user