|
@@ -9,15 +9,31 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
|
|
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
|
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Method;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * SpEl解析类
|
|
|
|
+ *
|
|
|
|
+ * @author mashu
|
|
|
|
+ */
|
|
public class SpElUtil {
|
|
public class SpElUtil {
|
|
|
|
|
|
|
|
+ private static SpelExpressionParser parser = new SpelExpressionParser();
|
|
|
|
+ private static DefaultParameterNameDiscoverer nameDiscoverer = new DefaultParameterNameDiscoverer();
|
|
|
|
+
|
|
private SpElUtil() {
|
|
private SpElUtil() {
|
|
}
|
|
}
|
|
|
|
|
|
- public static String analysisSpEl(String spElString, ProceedingJoinPoint joinPoint) {
|
|
|
|
- SpelExpressionParser parser = new SpelExpressionParser();
|
|
|
|
- DefaultParameterNameDiscoverer nameDiscoverer = new DefaultParameterNameDiscoverer();
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 解析切面SpEL
|
|
|
|
+ *
|
|
|
|
+ * @param spElString 表达式
|
|
|
|
+ * @param joinPoint 切面点
|
|
|
|
+ * @return 执行界面
|
|
|
|
+ */
|
|
|
|
+ public static Object analysisSpEl(String spElString, ProceedingJoinPoint joinPoint) {
|
|
// 通过joinPoint获取被注解方法
|
|
// 通过joinPoint获取被注解方法
|
|
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
|
|
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
|
|
Method method = methodSignature.getMethod();
|
|
Method method = methodSignature.getMethod();
|
|
@@ -33,8 +49,22 @@ public class SpElUtil {
|
|
for (int i = 0; i < args.length; i++) {
|
|
for (int i = 0; i < args.length; i++) {
|
|
context.setVariable(paramNames[i], args[i]);
|
|
context.setVariable(paramNames[i], args[i]);
|
|
}
|
|
}
|
|
- Object value = expression.getValue(context);
|
|
|
|
- return value == null ? "null" : value.toString();
|
|
|
|
|
|
+ return expression.getValue(context);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 批量解析切面SpEL
|
|
|
|
+ *
|
|
|
|
+ * @param spElStrings 表达式
|
|
|
|
+ * @param joinPoint 切面点
|
|
|
|
+ * @return 执行界面
|
|
|
|
+ */
|
|
|
|
+ public static Map<String, Object> analysisSpEls(List<String> spElStrings, ProceedingJoinPoint joinPoint) {
|
|
|
|
+ if (null == spElStrings) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ Map<String, Object> resultMap = new HashMap<>(spElStrings.size());
|
|
|
|
+ spElStrings.forEach(expression -> resultMap.put(expression, analysisSpEl(expression, joinPoint)));
|
|
|
|
+ return resultMap;
|
|
}
|
|
}
|
|
}
|
|
}
|