本文参考自Spring官方文档 Spring EL。
在Java上有很多表达式语言,在很多领域有各种各样的应用。我们应该很熟悉Java EE的表达式语言吧,让我们能在JSP中随意插入数据。Spring也提供了一个表达式语言并添加了自己的功能,以便可以方便的和各种Spring框架交互。我们在项目中不需要手动管理Spring表达式的这些接口和实例,只需要在合适的时候编写Spring表达式,转换器就会自动解析并转换表达式。
创建和使用解析器
当然,为了说明一下Spring表达式,我们在这里还是手动创建一个解析器来解析表达式。下面是简单的单元测试。
public class SpringElTest {
private static ExpressionParser parser = new SpelExpressionParser();
@Test
public void testHelloWorld() {
Expression expression = parser.parseExpression("'你好世界!'");
String result = (String) expression.getValue();
System.out.println(result);
}
}
还可以使用更复杂的例子。
@Test
public void testStringOperation() {
Expression expression = parser.parseExpression("'你好'.concat('世界!')");
String result = (String) expression.getValue();
System.out.println(result);
expression = parser.parseExpression("'Hello world!'.toUpperCase()");
result = expression.getValue(String.class);
System.out.println(result);
}
Spring文档解释了如何创建和使用Spring表达式的各个接口、编译和配置等等。但是一般情况下我们用不到这些功能。这里就只介绍一下Spring El的语法。如果需要详细了解这些信息的话还是直接看文档吧。
语言指南
这部分介绍了Spring EL表达式的使用。为了省事就直接引用了文档的代码了。下面这些代码没有说明的话都是Spring文档的例子。
字面值
表达式支持各种类型的字面值。字符串字面值需要使用单引号包括,其他类型字面值直接写就行。
ExpressionParser parser = new SpelExpressionParser();
// evals to "Hello World"
String helloWorld = (String) parser.parseExpression("'Hello World'").getValue();
double avogadrosNumber = (Double) parser.parseExpression("6.0221415E+23").getValue();
// evals to 2147483647
int maxValue = (Integer) parser.parseExpression("0x7FFFFFFF").getValue();
boolean trueValue = (Boolean) parser.parseExpression("true").getValue();
Object nullValue = parser.parseExpression("null").getValue();
属性和集合
S