Spring 中的 StandardBeanExpressionResolver
StandardBeanExpressionResolver 是用来对配置文件,或者其他地方的 Spel 表达式进行计算的,我们在配置的时候,有可能配置了一个表达式,而不是配置的最终结果,这时候Spring就需要对我们配置的表达式进行计算得到结果。比如我们配置一天有多少分钟可能会配置 ${24*60}这时候Spring需要算出这个结果。
1.SpelExpressionParser
SpelExpressionParser是Spring中真正执行表达式计算的组件,StandardBeanExpressionResolver最终也是调用 SpelExpressionParser 进行计算
@Test
public void spelExpressionParser() {
SpelExpressionParser spelExpressionParser = new SpelExpressionParser();
Expression expression = spelExpressionParser.parseExpression("10*20");
System.out.println(expression.getExpressionString() + "=" + expression.getValue());
}
运行结果:
10*20=200
2.StandardBeanExpressionResolver
StandardBeanExpressionResolver 主要就是通过配置的expressionPrefix,expressionSuffix 识别出一个字符串中有哪些表达式,然后将解析出来的表达式交给SpelExpressionParser计算出结果
@Test
public void standardBeanExpressionResolver(){
StandardBeanExpressionResolver standardBeanExpressionResolver = new StandardBeanExpressionResolver();
SpelExpressionParser spelExpressionParser = new SpelExpressionParser();
standardBeanExpressionResolver.setExpressionParser(spelExpressionParser);
standardBeanExpressionResolver.setExpressionPrefix("${");
standardBeanExpressionResolver.setExpressionSuffix("}");
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
BeanExpressionContext beanExpressionContext = new BeanExpressionContext(beanFactory , new SimpleThreadScope());
Object evaluate = standardBeanExpressionResolver.evaluate("aaa ${10*20} bbb", beanExpressionContext);
System.out.println(evaluate);
}
运行结果:
aaa 200 bbb
原文地址:https://blog.csdn.net/weixin_42286658/article/details/143572767
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!