Spring 表达语言的确切使用

Exact use of Spring Expression Language

我正在努力学习 Spring,所以从 here 我得到了这个例子,

ExpressionParser parser = new SpelExpressionParser();

// evals to "Hello World"
String helloWorld = (String) parser.parseExpression("'Hello World'").getValue();

但我不明白它的确切用法,因为我可以更好地将它声明为

String helloWorld = "Hello World";

那么上面SpEL的具体用途是什么?

在哪里可以更好地使用它?

那个特定的 SpEL 没用。当您传递给解析器的表达式来自某些外部源(例如注释值或 XML 属性)时,它很有用。对 EL 的全面解释对于 Stack Overflow 而言过于宽泛,但我建议查看 Thymeleaf 以了解 EL 如何发挥作用的示例。

(另请注意,使用 getValue(String.class) 而不是强制转换要好得多,这既因为它更安全,也因为您可以利用自动类型转换。)

Spring Expression Language主要用于视图层,如JSP,Thymeleaf。您可以使用 SpEL 在视图层中轻松操作 java 对象。如果你想在 java 层评估 SpEL 表达式,你可以使用 ExpressionParser 来获得结果。

通常我们希望视图层尽可能保持干净(不想评估复杂的逻辑操作)。但有时几乎不需要操纵。在那种情况下,SpEL 变得很方便。