Spring – Spring EL 表达式使用说明

简介

Spring的表达式语言,简称SpELl,是一个支持运行时检查和操作对象图的强大的表达式语言,和我们之前学习过的JSP中的EL表达式类似,SPEL使用的是#{}作为定界符,所有在大括号中的字符都被认为的SPEL,SPEL为bean的属性进行动态赋值提供了非常大的便利

 

SpEL基本使用

字符串注入

直接输入字面量,如字符串,数字等,但意义不大

@Value("spring boot")
private String spring;

 

 

读系统配置变量

@Value("#{systemProperties['os.name']}")
private String osName;

输出是PC的操作系统,例如Windows 10,他能获取系统的属性值

 

 

调用类的方法

@Value("#{T(Math).random()*100}")
private Integer random;

其中的 T() 表示要调用的Java包中的类,调用类需要包含在T()中

 

 

获取类的属性

假如需要获取的对象,在Spring Bean中存储管理时,可以直接通过获取该对象中的值,前提是,该对象要存在get方法

@Value("#{bean.prop}")
private String test;

 

 

链式调用方法

可以像执行代码那样调用类的方法,还可以链式调用

@Value("#{stringProp.substring(1).toUpperCase()}")
private String test;

 

 

stringProp 有抛 Null 的可能,如果真为 Null 确实是会抛出 空指针异常,但 SpEL 支持可选语法 ?.

@Value("#{stringProp?.substring(1)?.toUpperCase()}")
private String test;

当stringProp不为空时,则调用,为空时则不调用

 

?号的作用就是在调用方法之前,先判断结果是不是null值,如果是则直接返回null,如果不是,才会继续调用后面的方法.

 

算术运算

@Value("#{(1+2)>3}")
private boolean test;

 

 

三元运算符

@Value("#{(1+2)>3 ? true : false}")
private boolean test;

 

 

elvis 运算符

elvis 运算符支持默认值语法 ?:

@Value("#{person.getName() ?: 'zhangsan'}")
private String pName;

当 getName() 不能获取数据时,则默认填充 zhangsan

 

 

@Value("#{personList.list[2]}")
private Person person;

获取 ArrayList 对象的下标值

 

@Value("#{mapProp.map[key1]}")
private String value;

获取 Map 对象的对应 key 的值

 

@Value("#{personList.list.?[age==19]}")
private List<Person> person;

获取 ArrayList 对象中的成员中的 age 为 19 的对象,并取出来形成新的List对象

其中 .?[] 是查询所有,而 .^[] 是查询第一个,满足条件的, .$[] 是查询最后一个满足条件的.

 

@Value("#{personList.list.![pName]}")
private List<String> pNames;

使用 .![] 进行集合投影,将Person集合中的pName属性都拿了出来,并且塞到了一个新的集合之中

 

读取配置文件

假如在Spring中存在 applicarion.yml 配置文件,可以通过以下方法读取到值

@Value("${book.name}")
private String normal;

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Spring – Spring EL 表达式使用说明
简介 Spring的表达式语言,简称SpELl,是一个支持运行时检查和操作对象图的强大的表达式语言,和我们之前学习过的JSP中的EL表达式类似,SPEL使用的是#{}作为定界符,所有在大括号中的字符都被……
<<上一篇
下一篇>>