【第五章】Spring表达式语言 之 5.3 SpEL语法 ——跟我学spring3
5.3? SpEL语法5.3.1? 基本表达式
一、字面量表达式:?SpEL支持的字面量包括:字符串、数字类型(int、long、float、double)、布尔类型、null类型。
类型
示例
字符串
String str1 = parser.parseExpression("'Hello World!'").getValue(String.class);
String str2 = parser.parseExpression("\"Hello World!\"").getValue(String.class);
数字类型
int int1 = parser.parseExpression("1").getValue(Integer.class);
long long1 = parser.parseExpression("-1L").getValue(long.class);
float float1 = parser.parseExpression("1.1").getValue(Float.class);
double double1 = parser.parseExpression("1.1E+2").getValue(double.class);
int hex1 = parser.parseExpression("0xa").getValue(Integer.class);
long hex2 = parser.parseExpression("0xaL").getValue(long.class);
布尔类型
boolean true1 = parser.parseExpression("true").getValue(boolean.class);
boolean false1 = parser.parseExpression("false").getValue(boolean.class);
null类型
Object null1 = parser.parseExpression("null").getValue(Object.class);
?
二、算数运算表达式:?SpEL支持加(+)、减(-)、乘(*)、除(/)、求余(%)、幂(^)运算。
类型
示例
加减乘除
int result1 = parser.parseExpression("1+2-3*4/2").getValue(Integer.class);//-3
求余
int result2 = parser.parseExpression("4%3").getValue(Integer.class);//1
幂运算
int result3 = parser.parseExpression("2^3").getValue(Integer.class);//8
SpEL还提供求余(MOD)和除—IV)而外两个运算符,与“%”和“/”等价,不区分大小写。
?
三、关系表达式:等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=),区间(between)运算,如“parser.parseExpression("1>2").getValue(boolean.class);”将返回false;而“parser.parseExpression("1 between {1, 2}").getValue(boolean.class);”将返回true。
?????? between运算符右边操作数必须是列表类型,且只能包含2个元素。第一个元素为开始,第二个元素为结束,区间运算是包含边界值的,即 xxx>=list.get(0) && xxx<=list.get(1)。
?????? SpEL同样提供了等价的“EQ” 、“NE”、 “GT”、“GE”、 “LT” 、“LE”来表示等于、不等于、大于、大于等于、小于、小于等于,不区分大小写。
?
四、逻辑表达式:且(and)、或(or)、非(!或NOT)。
?
。我使用的场景比较小! 而且SpEL现在是spring比较核心的模块