- カスタム関数の追加: SpelExpressionParserには、デフォルトで使用できる多くの関数がありますが、独自のカスタム関数を追加することもできます。以下は、カスタム関数を追加する例です。
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class CustomFunctionExample {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// カスタム関数を追加
context.registerFunction("customFunction", CustomFunction.class.getDeclaredMethod("customMethod", String.class));
String expression = "#customFunction('Hello')";
String result = parser.parseExpression(expression).getValue(context, String.class);
System.out.println(result); // 結果: "Hello World!"
}
}
public class CustomFunction {
public static String customMethod(String input) {
return input + " World!";
}
}
- カスタムオペレータの追加: SpelExpressionParserは、デフォルトで多くの演算子をサポートしていますが、独自のカスタムオペレータを追加することもできます。以下は、カスタムオペレータを追加する例です。
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class CustomOperatorExample {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// カスタムオペレータを追加
context.registerOperator("customOperator", new CustomOperator());
String expression = "10 customOperator 5";
int result = parser.parseExpression(expression).getValue(context, Integer.class);
System.out.println(result); // 結果: 15
}
}
public class CustomOperator {
public int customOperator(int operand1, int operand2) {
return operand1 + operand2;
}
}
これらは、SpelExpressionParserのカスタマイズの一部の例です。特定の要件に合わせてカスタマイズする方法はさまざまですが、上記のコード例は一般的なアプローチを示しています。詳細な情報については、Spring Frameworkのドキュメントやリファレンスを参照してください。