eva luationContext context1 = new Standardeva luationContext();
ExpressionParser parser = new SpelExpressionParser();
context1.setVariable("collection", collection);
Collection
parser.parseExpression("#collection. [#this.uuid.equals('u1')]").getValue(context1, Collection.class);
//测试Map筛选
java代码:
查看复制到剪贴板打印
eva luationContext context1 = new Standardeva luationContext();
ExpressionParser parser = new SpelExpressionParser();
context1.setVariable("map", map);
Map
parser.parseExpression("#map. [#this.key=='u1']").getValue(context1, Map.class);
nXml风格的配置
SpEL支持在Bean定义时使用,默认使用“#{SpEL表达式}”表示,不允许嵌套。其中“#root”根对象默认可以认为是ApplicationContext,获取根对象属性其实是获取容器中的Bean。
nXml风格的配置示例----通过SpEL表达式设置值
java代码:
查看复制到剪贴板打印
Xml风格的配置示例----通过SpEL表达式参照其他的Bean
java代码:
查看复制到剪贴板打印
上面的t1就会被解析成为参照t1这个Bean,当然也可以使用@t1来表示。
注解风格的配置
使用@Value注解来指定SpEL表达式,该注解可以放到字段、方法及方法参数上。 但是要在配置文件中使用
java代码:
查看复制到剪贴板打印
public class SpELBean {
@Value("#{ T(java.lang.Math).random() * 100.0 }")
private String value;
//setter和getter由于篇幅省略,自己写上
}