リテラル式

SpEL は、次の型のリテラル式をサポートしています。

String

文字列は一重引用符 (') または二重引用符 (") で区切ることができます。一重引用符で囲まれた文字列リテラル内に一重引用符を含めるには、隣接する 2 つの一重引用符文字を使用します。同様に、二重引用符で囲まれた文字列リテラル内に二重引用符を含めるには、隣接する 2 つの二重引用符文字を使用します。

番号

数値では、負符号、指数表記、小数点の使用がサポートされています。

  • 整数: int または long

  • 16 進数: int または long

  • 本物: float または double

    • デフォルトでは、実数は Double.parseDouble() を使用して解析されます。

Boolean

true または false

null

null

Spring 式言語の設計と実装により、リテラル数値は常に正の数値として内部的に保存されます。

例: -2 は内部的に正の 2 として保存され、式の評価中に ( 0 - 2 の値を計算することにより) 否定されます。

これは、Java では、その型の数値の最小値に等しい負のリテラル数値を表すことができないことを意味します。例: Java の int でサポートされる最小値は Integer.MIN_VALUE で、その値は -2147483648 です。ただし、SpEL 式に -2147483648 を含めると、値 2147483648 を int として解析できないことを通知する例外がスローされます ( Integer.MAX_VALUE の値である 2147483647 を超えているため)。

SpEL 式内の特定の型の数値の最小値を使用する必要がある場合は、それぞれのラッパー型 ( Integer.MIN_VALUELong.MIN_VALUE など) の MIN_VALUE 定数を参照するか、最小値を計算できます。例: 最小の整数値を使用するには:

  • T(Integer).MIN_VALUE —  StandardEvaluationContext が必要です

  • -2^31 — あらゆる型の EvaluationContext で使用可能

次のリストは、リテラルの簡単な使用箇所を示しています。通常、これらはこのように単独で使用されるのではなく、より複雑な式の一部として使用されます。たとえば、論理比較演算子の片側でリテラルを使用したり、メソッドの引数として使用したりします。

  • Java

  • Kotlin

ExpressionParser parser = new SpelExpressionParser();

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

// evaluates to "Tony's Pizza"
String pizzaParlor = (String) parser.parseExpression("'Tony''s Pizza'").getValue();

double avogadrosNumber = (Double) parser.parseExpression("6.0221415E+23").getValue();

// evaluates to 2147483647
int maxValue = (Integer) parser.parseExpression("0x7FFFFFFF").getValue();

boolean trueValue = (Boolean) parser.parseExpression("true").getValue();

Object nullValue = parser.parseExpression("null").getValue();
val parser = SpelExpressionParser()

// evaluates to "Hello World"
val helloWorld = parser.parseExpression("'Hello World'").value as String

// evaluates to "Tony's Pizza"
val pizzaParlor = parser.parseExpression("'Tony''s Pizza'").value as String

val avogadrosNumber = parser.parseExpression("6.0221415E+23").value as Double

// evaluates to 2147483647
val maxValue = parser.parseExpression("0x7FFFFFFF").value as Int

val trueValue = parser.parseExpression("true").value as Boolean

val nullValue = parser.parseExpression("null").value