diff --git a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/processor/DsSpelExpressionProcessor.java b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/processor/DsSpelExpressionProcessor.java index 03c6c36d..6f42c170 100644 --- a/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/processor/DsSpelExpressionProcessor.java +++ b/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/processor/DsSpelExpressionProcessor.java @@ -50,24 +50,9 @@ public class DsSpelExpressionProcessor extends DsProcessor { * 对于默认不设置的情况下,从参数中取值的方式 #param1 * 设置指定模板 ParserContext.TEMPLATE_EXPRESSION 后的取值方式: #{#param1} * issues: https://github.com/baomidou/dynamic-datasource-spring-boot-starter/issues/199 + * issues: https://github.com/baomidou/dynamic-datasource-spring-boot-starter/issues/485 */ - private ParserContext parserContext = new ParserContext() { - - @Override - public boolean isTemplate() { - return false; - } - - @Override - public String getExpressionPrefix() { - return null; - } - - @Override - public String getExpressionSuffix() { - return null; - } - }; + private ParserContext parserContext = ParserContext.TEMPLATE_EXPRESSION; private BeanResolver beanResolver; @Override @@ -82,8 +67,7 @@ public String doDetermineDatasource(MethodInvocation invocation, String key) { ExpressionRootObject rootObject = new ExpressionRootObject(method, arguments, invocation.getThis()); StandardEvaluationContext context = new MethodBasedEvaluationContext(rootObject, method, arguments, NAME_DISCOVERER); context.setBeanResolver(beanResolver); - final Object value = PARSER.parseExpression(key, parserContext).getValue(context); - return value == null ? null : value.toString(); + return PARSER.parseExpression(key, parserContext).getValue(context, String.class); } /**