SpringBoot使用EL表达式调用方法:
/**
* 1. SpelExpressionParser 在进行bean解析时 需要使用到 StandardEvaluationContext
* 否则无法正确的解析bean 会报错:EL1057E: No bean resolver registered in the context to resolve access to bean 'qcAuth'
* 2. StandardEvaluationContext 可以为SpelExpressionParser 提供被解析的Bean
* 3. 所以在这里手动的注入一个 包含了ApplicationContext 的 StandardEvaluationContext
* 用于后续使用 SpelExpressionParser
*/
@Component
public class QCStandardEvaluationContext extends StandardEvaluationContext implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
//将application Context 提供给 StandardEvaluationContext
setBeanResolver(new BeanFactoryResolver(applicationContext));
}
}
/**
* 测试El表达式解析方法
*/
@Test
public void Test6(){
ExpressionParser parser = new SpelExpressionParser();
Object value = parser.parseExpression("@qcAuth.deleteVideoTopi_OwnerIdResolver(123)")
.getValue(standardEvaluationContext);
System.out.println(value);
System.out.println();
}
文章介绍了在SpringBoot中使用EL表达式调用方法时遇到的问题,如需使用StandardEvaluationContext来解析bean,防止出现Nobeanresolverregisteredinthecontext的错误。通过创建QCStandardEvaluationContext并实现ApplicationContextAware接口,手动注入ApplicationContext来解决这个问题。在测试中,展示了如何使用SpelExpressionParser解析并执行EL表达式。
1453





