Commit 27faa6153adece4fcca63a5f3a0cbeef500e1b28

Authored by dark
1 parent 7f84e44e

优化spel表达式解析工具类

src/main/java/cn/iocoder/dashboard/common/annotation/BizTracing.java
... ... @@ -13,7 +13,13 @@ import java.lang.annotation.*;
13 13 */
14 14 public @interface BizTracing {
15 15  
  16 + /**
  17 + * 交易流水tag名
  18 + */
16 19 String BIZ_ID_TAG = "bizId";
  20 + /**
  21 + * 交易类型tag名
  22 + */
17 23 String BIZ_TYPE_TAG = "bizType";
18 24  
19 25 String bizId();
... ...
src/main/java/cn/iocoder/dashboard/common/annotation/BizTracingAop.java
... ... @@ -21,8 +21,8 @@ public class BizTracingAop {
21 21  
22 22 @Around(value = "@annotation(bizTracing)")
23 23 public void tagBizInfo(ProceedingJoinPoint joinPoint, BizTracing bizTracing) {
24   - String bizId = SpElUtil.analysisSpEl(bizTracing.bizId(), joinPoint);
25   - String bizType = SpElUtil.analysisSpEl(bizTracing.bizType(), joinPoint);
  24 + String bizId = (String) SpElUtil.analysisSpEl(bizTracing.bizId(), joinPoint);
  25 + String bizType = (String) SpElUtil.analysisSpEl(bizTracing.bizType(), joinPoint);
26 26 if (StrUtil.isBlankIfStr(bizId)) {
27 27 log.error("empty biz: bizId[{}], bizType[{}].", bizId, bizType);
28 28 return;
... ...
src/main/java/cn/iocoder/dashboard/util/sping/SpElUtil.java
... ... @@ -9,15 +9,31 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
9 9 import org.springframework.expression.spel.support.StandardEvaluationContext;
10 10  
11 11 import java.lang.reflect.Method;
  12 +import java.util.HashMap;
  13 +import java.util.List;
  14 +import java.util.Map;
12 15  
  16 +/**
  17 + * SpEl解析类
  18 + *
  19 + * @author mashu
  20 + */
13 21 public class SpElUtil {
14 22  
  23 + private static SpelExpressionParser parser = new SpelExpressionParser();
  24 + private static DefaultParameterNameDiscoverer nameDiscoverer = new DefaultParameterNameDiscoverer();
  25 +
15 26 private SpElUtil() {
16 27 }
17 28  
18   - public static String analysisSpEl(String spElString, ProceedingJoinPoint joinPoint) {
19   - SpelExpressionParser parser = new SpelExpressionParser();
20   - DefaultParameterNameDiscoverer nameDiscoverer = new DefaultParameterNameDiscoverer();
  29 + /**
  30 + * 解析切面SpEL
  31 + *
  32 + * @param spElString 表达式
  33 + * @param joinPoint 切面点
  34 + * @return 执行界面
  35 + */
  36 + public static Object analysisSpEl(String spElString, ProceedingJoinPoint joinPoint) {
21 37 // 通过joinPoint获取被注解方法
22 38 MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
23 39 Method method = methodSignature.getMethod();
... ... @@ -33,8 +49,22 @@ public class SpElUtil {
33 49 for (int i = 0; i < args.length; i++) {
34 50 context.setVariable(paramNames[i], args[i]);
35 51 }
36   - Object value = expression.getValue(context);
37   - return value == null ? "null" : value.toString();
  52 + return expression.getValue(context);
  53 + }
38 54  
  55 + /**
  56 + * 批量解析切面SpEL
  57 + *
  58 + * @param spElStrings 表达式
  59 + * @param joinPoint 切面点
  60 + * @return 执行界面
  61 + */
  62 + public static Map<String, Object> analysisSpEls(List<String> spElStrings, ProceedingJoinPoint joinPoint) {
  63 + if (null == spElStrings) {
  64 + return null;
  65 + }
  66 + Map<String, Object> resultMap = new HashMap<>(spElStrings.size());
  67 + spElStrings.forEach(expression -> resultMap.put(expression, analysisSpEl(expression, joinPoint)));
  68 + return resultMap;
39 69 }
40 70 }
... ...