spring spel
时间: 2023-12-02 18:42:13 浏览: 31
Spring SpEL(Spring Expression Language)是Spring框架中的一个功能强大的表达式语言,它支持在运行时查询和操作对象图。SpEL提供了一种强大的表达式语言,可以在运行时查询和操作对象图。它可以用于查询和操作对象图中的属性,方法调用,访问数组和集合等。SpEL还支持算术,逻辑和关系运算符,可以使用它们来计算表达式的值。以下是SpEL的一些示例:
1. 访问对象属性
```java
public class Person {
private String name;
private int age;
// getter and setter methods
}
Person person = new Person();
person.setName("John");
person.setAge(30);
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("name");
String name = (String) exp.getValue(person); // 输出:John
exp = parser.parseExpression("age");
int age = (Integer) exp.getValue(person); // 输出:30
```
2. 调用对象方法
```java
public class MyStringUtils {
public static String reverseString(String str) {
return new StringBuilder(str).reverse().toString();
}
}
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("T(com.example.MyStringUtils).reverseString('hello')");
String reversedStr = (String) exp.getValue(); // 输出:olleh
```
3. 访问数组和集合
```java
int[] arr = new int[] {1, 2, 3, 4, 5};
List<String> list = Arrays.asList("apple", "banana", "orange");
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("arr[2]");
int num = (Integer) exp.getValue(arr); // 输出:3
exp = parser.parseExpression("list[1]");
String fruit = (String) exp.getValue(list); // 输出:banana
```
4. 算术,逻辑和关系运算符
```java
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("10 * 5 + 2");
int result = (Integer) exp.getValue(); // 输出:52
exp = parser.parseExpression("true and false");
boolean boolResult = (Boolean) exp.getValue(); // 输出:false
exp = parser.parseExpression("10 > 5");
boolResult = (Boolean) exp.getValue(); // 输出:true
```