![从企业级开发到云原生微服务:Spring Boot实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/257/33831257/b_33831257.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
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=1739938467-liwNLWbJ51T2Z6tuR27cfnDVj5dJSNIn-0-d7ef9bfd5285e728f58fbd6127fa4986)
2.比较运算
可以在表达式中进行比较运算,包括<、>、==、!=、<=、>=、lt、gt、eq、ne、le和ge。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_02.jpg?sign=1739938467-fInoDsIoNqnB3leTjgZRcMuOBoH6kiY9-0-1dae60bc64a57ca6298c666e1f96c572)
3.逻辑运算
可以在表达式中进行逻辑运算,包括and、or、not、&&、||和 !。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_03.jpg?sign=1739938467-B19w3ulRFOKzsd11waZrxzho1SybQuH0-0-bf28e3ef19158f5af9a336c27ec762ec)
4.条件运算
使用三元运算符?:可进行条件运算。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_04.jpg?sign=1739938467-5ldOeW1MawHUoAYkm4O4nU29IwKGtgqj-0-7fe250491d98f38f3bd5027d3a7e6caa)
5.正则匹配
使用matches可判断字符是否符合正则表达式。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_74_05.jpg?sign=1739938467-lvc4L2SabhIDwl6Om8Kgdek45HVjPqkJ-0-eff6e3dfe0fc1fc63f705f1173a5d951)
6.调用Bean方法
可以直接用Spring EL来调用Bean的方法,假设被调用的Bean定义如下。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_01.jpg?sign=1739938467-ljccLNvZKazHVmgeL42lhQvZCy30LyAg-0-0a6b8e73755acd526ef3c0cddf2d8ef5)
可以通过#{bean名.方法名(参数)}来调用。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_02.jpg?sign=1739938467-VyBzJTBN8H6yixceF6IpvHrBmjVfHE36-0-a41a6f356431a71c18ef3d600d97d3fd)
7.获得Environment中的属性
Environment可以从外部文件或者操作系统环境变量中获取属性信息,示例如下。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_03.jpg?sign=1739938467-M4FOBsMJifyJxi14bPrAyRPvCab1HTBx-0-9b8a5f38031a945785d842ce3163b144)
a.通过@PropertySource把配置文件中的属性信息加载到Environment中。
b.查询属性使用符号$,格式为$(属性名)。
c.获得操作系统环境变量信息的方式与b一致。
完整代码如下。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_75_04.jpg?sign=1739938467-pIosfZtYq21QiBMRqd0Y7vca86HOwAzV-0-b3ebbba818ce49014d6d72c6b402cdca)
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_76_01.jpg?sign=1739938467-X3kLO8AjR5J8bbNJPZLeQ6fr5nR0cP4x-0-841261ffc0b1274ad2f52b4ad16c06d4)
在JavaConfig中进行校验,结果如图3-16所示。
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_76_02.jpg?sign=1739938467-T7DehLmWT1anbE4ySM3C0KylazP2Z5TX-0-f64be08779e0f9afcf1ecb0140e3d743)
![](https://epubservercos.yuewen.com/E5E2EB/18096059808236406/epubprivate/OEBPS/Images/37792_76_03.jpg?sign=1739938467-QVj2fOFWbRfJgHIwWSlFt3iWgfQhwkOY-0-9a3656f88abee39b36ed6756c14f40c0)
图3-16