我正在尝试学习Spring
,所以从here我得到了这个例子,
ExpressionParser parser = new SpelExpressionParser();
// evals to "Hello World"
String helloWorld = (String) parser.parseExpression("'Hello World'").getValue();
但我不明白它的确切用法,因为我可以更好地将其声明为
String helloWorld = "Hello World";
那么上面SpEL
的确切用法是什么?
哪里可以更好地使用它?
答案 0 :(得分:4)
特定的SpEL 无用。传递给解析器的表达式来自某些外部源(例如注释值或XML属性)时,它非常有用。关于EL的全面解释对于Stack Overflow而言过于宽泛,但我建议查看Thymeleaf以获取EL如何有用的示例。
(另请注意,使用getValue(String.class)
代替投射会更好,因为它更安全,因为您可以利用自动类型转换。)
答案 1 :(得分:1)
Spring Expression Language主要用于JSP,Thymeleaf等视图层。您可以使用SpEL在视图层中轻松地操作java对象。如果要评估java层中的SpEL表达式,可以使用ExpressionParser
来获得结果。
通常我们希望尽可能保持视图层的清洁(不想评估复杂的逻辑操作)。但有时必须进行少量操作。在那种情况下,SpEL变得很方便。