- 从企业级开发到云原生微服务:Spring Boot实战
- 汪云飞等
- 441字
- 2021-04-04 11:26:53
3.6 Spring EL
Spring EL(Spring Expression Language,Spring表达式语言)是Spring生态下的通用语言,在运行时使用表达式查询属性信息(使用符号$)或操作Java对象(使用符号#),主要用在XML或注解上。
本节主要使用@Value(org.springframework.beans.factory.annotation.Value)注解来演示Spring EL的功能,它可以获得表达式计算出来的结果。
1.数学运算
可以在表达式中进行数学运算,包括+、-、*、/、%、^、div和mod。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_01.jpg?sign=1739596764-Q8yul0cuVt0soAaHbi2RzPwAHzsnTqXd-0-391196361619281badaf30726bd8cc71)
2.比较运算
可以在表达式中进行比较运算,包括<、>、==、!=、<=、>=、lt、gt、eq、ne、le和ge。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_02.jpg?sign=1739596764-XTyEpEvUs4c7JmCmVmhhVe76m0U41fJc-0-b40c70ad6876f4ac76e77cbc818392ab)
3.逻辑运算
可以在表达式中进行逻辑运算,包括and、or、not、&&、||和 !。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_03.jpg?sign=1739596764-UqmQZm7ZALocz0LzG9TQC3jakdgWghpO-0-ecfcc9e95c84867e7583468e9b79522d)
4.条件运算
使用三元运算符?:可进行条件运算。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_04.jpg?sign=1739596764-vaq6CEdLdrEgNFBQtq7w79z9vqKB8DYx-0-5606edeaf4168de2452d16b6bf1d7a84)
5.正则匹配
使用matches可判断字符是否符合正则表达式。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_05.jpg?sign=1739596764-Wtyht1Db8TYHo5Xp17sADpxpS0eVDYWt-0-6b2c2a68bc34dddff9f5c0ed1bbdf1c9)
6.调用Bean方法
可以直接用Spring EL来调用Bean的方法,假设被调用的Bean定义如下。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_01.jpg?sign=1739596764-bX5PSpiqJH8SRFoVj9O7gUzVt8xih2Jk-0-1283befb59dc7e11b1023c268c4513fd)
可以通过#{bean名.方法名(参数)}来调用。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_02.jpg?sign=1739596764-MbFsy8dFEFnX9GbvXYbxjvFY8A0bCL8W-0-b6e9608e4bd8a2a269e34258873202ca)
7.获得Environment中的属性
Environment可以从外部文件或者操作系统环境变量中获取属性信息,示例如下。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_03.jpg?sign=1739596764-19gfl1njx4mrscb1S1oZWko9fpdTLj3C-0-87988c5402fef960159474e8600aef5c)
a.通过@PropertySource把配置文件中的属性信息加载到Environment中。
b.查询属性使用符号$,格式为$(属性名)。
c.获得操作系统环境变量信息的方式与b一致。
完整代码如下。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_04.jpg?sign=1739596764-XCvT8na5HBJ7PKfBdNYE6IPhzuxZTLG8-0-d03cfc78eed4ae08ac697c7f57f70999)
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_76_01.jpg?sign=1739596764-AbnVSvsXGknzk2yPPTFbNnYTqcc1Azjn-0-af2f4678245ec07a558eabf0d3944aa9)
在JavaConfig中进行校验,结果如图3-16所示。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_76_02.jpg?sign=1739596764-2PrOA6IqeiNcRYipCeCFSXdILg5n0qvD-0-bf220250a52ee975df80d82d2a00d030)
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_76_03.jpg?sign=1739596764-UpGTIjcY5u62Iqd3uVlpOdGSUoQ8FUEq-0-b9a38502e60e27faae1e2fb7f7dd805a)
图3-16