Spring表達(dá)式語言SpEL用法詳解
這篇文章主要介紹了spring表達(dá)式語言SpEL用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
(1)spring表達(dá)式語言是一個支持運(yùn)行時查詢和操作對象圖得我強(qiáng)大表達(dá)式語言。
(2)語言類似于EL:SpEL使用#{...}作為定界符。所有在大括號中的字符串均被認(rèn)為是SpEL。
(3)SpEL為bean的屬性進(jìn)行動態(tài)賦值提供了便利。
(4)通過SpEL可以實(shí)現(xiàn):
- 通過Bean的id對Bean進(jìn)行引用
- 調(diào)用方法及引用對象的屬性
- 計(jì)算表達(dá)式的值
- 正則表達(dá)式匹配
字面量的表示:
- 整型:#{5}
- 小數(shù):#{3.45}
- 科學(xué)計(jì)數(shù)法:#[1e4]
- 字符串:可以使用單引號或雙引號早味字符串的定界符:#{'tom'},#{"tom"}
- 布爾值:#{false}
SpEL支持的運(yùn)算符號:+ - * / % ^ < > == <= >= lt gt eq le ge and or not | (?:) if-else 正則表達(dá)式等等
調(diào)用靜態(tài)屬性和方法:通過T()
以下代碼均忽略類中的getter、setter和to_string方法。
Car.java
package com.gong.spring.beans.spel;
public class Car {
public Car() {
}
public Car(String name) {
this.name = name;
}
private String name;
//輪胎周長
private double tyrePerimeter;
private double price;}
Address.java
package com.gong.spring.beans.spel;
public class Address {
private String city;
private String street;
}
Student.java
package com.gong.spring.beans.spel;
public class Student {
private String name;
private int age;
private double score;
private String city;
private String info;
private Car car;
private Address address;
}
beans-spel.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="car" class="com.gong.spring.beans.spel.Car" p:name="baoma" p:tyrePerimeter="#{T(java.lang.Math).PI*80}"></bean>
<bean id="address" class="com.gong.spring.beans.spel.Address"
p:city="武漢" p:street="#{'絡(luò)南街道'}"></bean>
<bean id="student" class="com.gong.spring.beans.spel.Student" p:name="tom"
p:age="#{12}" p:score="#{99.00}">
<!-- 使用spel引用其它的bean -->
<property name="car" value="#{car}"></property>
<!-- 使用spel引用其它bean的屬性 -->
<property name="city" value="#{address.city}"></property>
<!-- 使用spel運(yùn)算符 ,進(jìn)行動態(tài)賦值-->
<property name="info" value="#{car.price >300000 ? '有錢' : '沒錢'}"></property>
</bean>
</beans>
Main.java
package com.gong.spring.beans.spel;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
//1.創(chuàng)建spring的IOC容器對象
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-spel.xml");
//2.從容器中獲取Bean實(shí)例
Student student = (Student) ctx.getBean("student");
System.out.println(student.toString());
}
}
部分輸出:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于SpringBoot自定義條件注解與自動配置
這篇文章主要介紹了關(guān)于SpringBoot自定義條件注解與自動配置,Spring Boot的核心功能就是為整合第三方框架提供自動配置,而本文則帶著大家實(shí)現(xiàn)了自己的自動配置和Starter,需要的朋友可以參考下2023-07-07
IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)
這篇文章主要介紹了IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新),小編測試這種激活工具也適用idea2022以下所有版本,本篇教程整理的比較詳細(xì),匯總了idea各個版本的激活工具,激活方法多種多樣,大家選擇一種即可,感興趣的朋友跟隨小編一起看看吧2022-09-09
java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,鏈?zhǔn)疥?duì)列,循環(huán)隊(duì)列)
下面小編就為大家分享一篇java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,鏈?zhǔn)疥?duì)列,循環(huán)隊(duì)列),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
SpringBoot實(shí)現(xiàn)郵件推送的詳細(xì)代碼
在項(xiàng)目中經(jīng)常會遇到SpringBoot推送消息的業(yè)務(wù),除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就帶大家實(shí)現(xiàn)郵件推送,文中有詳細(xì)代碼講解,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04
Java實(shí)現(xiàn)隊(duì)列的三種方法集合
這篇文章主要介紹了Java實(shí)現(xiàn)隊(duì)列的三種方法集合,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
JAXB命名空間_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JAXB命名空間的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Java19新特性中外部函數(shù)與內(nèi)存API
Java19引入的外部函數(shù)與內(nèi)存API(預(yù)覽功能)是Project Panama一部分,旨在簡化Java與本地代碼及非堆內(nèi)存的交互,提供更低層次的編程能力,解決了傳統(tǒng)JNI調(diào)用的復(fù)雜性、安全性和性能局限,特別適合高性能計(jì)算和系統(tǒng)編程領(lǐng)域,感興趣的可以了解一下2024-09-09

