介绍
Sping EL(Spring Expression Language 简称 SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象,它可以与 XML 或基于注解的 Spring 配置一起使用。语言语法类似于统一 EL,但提供了额外的功能,方法调用和字符串模板功能。
虽然还有其他几种可用的 Java 表达式语言,OGNL、MVEL 和 JBoss EL等,但创建 Spring 表达式语言是为了向 Spring 社区提供一种受良好支持的表达式语言,SpEL基于与技术无关的 API,允许在需要时集成其他表达式语言实现。
使用
获取属性值
@Value("${cls.name}")
private String name;
@Value("#{${cls.name}}")
private String aName;
关系运算符和逻辑运算符
@Value("#{3 gt 2 && 2 le 2 and 1 < -1}")
private boolean flag;
正则运算符
@Value("#{'100' matches '\\d+' }") // true
private boolean numberFlag;
静态方法
@Value("random number is #{T(java.lang.Math).random()}")
private String temp;
访问 Spring Bean
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/t2")
public void t2() {
SpelExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
context.setBeanResolver(new BeanFactoryResolver(applicationContext));
Car car = parser.parseExpression("@car").getValue(context, Car.class);
System.out.println("car : " + car);
String result = parser.parseExpression("@car.getName()").getValue(context, String.class);
System.out.println("return result : " + result);
}