实现BeanFactoryAware以获取对bean工厂的引用;然后…
StandardEvaluationContext context = new StandardEvaluationContext();
context.setBeanResolver(new BeanFactoryResolver(this.beanFactory));
Expression expression = parser.parseExpression("@someOtherBean.getData()");
// or "@someOtherBean.data"
final String value = expression.getValue(context, String.class);
编辑
回答下面的评论. @触发使用bean工厂解析器来访问bean;另一种方法是将BeanExpressionContextAccessor添加到评估上下文中,并使用BeanExpressionContext作为评估的根对象…
final ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setBeanResolver(new BeanFactoryResolver(beanFactory));
context.addPropertyAccessor(new BeanExpressionContextAccessor());
Expression expression = parser.parseExpression("someOtherBean.getData()");
BeanExpressionContext rootObject = new BeanExpressionContext(beanFactory, null);
...
String value = expression.getValue(context, rootObject, String.class);