package cn.besteam.common.util;
|
|
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.reflect.MethodSignature;
|
import org.springframework.context.expression.MethodBasedEvaluationContext;
|
import org.springframework.core.DefaultParameterNameDiscoverer;
|
import org.springframework.core.ParameterNameDiscoverer;
|
import org.springframework.expression.EvaluationContext;
|
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
|
import java.lang.reflect.Method;
|
|
/**
|
* @author chenqilong
|
* @since 2019-05-21
|
*/
|
public class SpringUtil {
|
|
private static final ParameterNameDiscoverer NAME_DISCOVERER = new DefaultParameterNameDiscoverer();
|
|
private static final ExpressionParser PARSER = new SpelExpressionParser();
|
|
public static String getSpelValue(ProceedingJoinPoint joinPoint, String definitionKey) {
|
|
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
|
Method method = signature.getMethod();
|
return getSpelValue(definitionKey, method, joinPoint.getArgs());
|
}
|
|
public static String getSpelValue(String definitionKey, Method method, Object[] parameterValues) {
|
|
EvaluationContext context = new MethodBasedEvaluationContext(null, method, parameterValues, NAME_DISCOVERER);
|
String val = PARSER.parseExpression(definitionKey).getValue(context).toString();
|
return val;
|
}
|
|
}
|