Spring 運算式語言 (SpEL)
Spring 運算式語言 (簡稱 "SpEL") 是一種強大的運算式語言,支援在執行時期查詢和操作物件圖。此語言語法與 Jakarta 運算式語言 相似,但提供額外功能,最值得注意的是方法調用和基本字串範本功能。
雖然還有其他幾種 Java 運算式語言可用 (例如 OGNL、MVEL 和 JBoss EL),但建立 Spring 運算式語言是為了向 Spring 社群提供一種在 Spring 產品組合中的所有產品中都可使用的單一良好支援的運算式語言。其語言功能是由 Spring 產品組合中專案的需求所驅動,包括 Spring Tools for Eclipse 中程式碼完成支援的工具需求。也就是說,SpEL 是基於與技術無關的 API,如果需要,可以整合其他運算式語言實作。
雖然 SpEL 作為 Spring 產品組合中運算式評估的基礎,但它並非直接與 Spring 繫結,可以獨立使用。為了保持獨立性,本章中的許多範例都將 SpEL 用作獨立的運算式語言。這需要建立一些引導基礎架構類別,例如剖析器。大多數 Spring 使用者無需處理此基礎架構,而只需撰寫用於評估的運算式字串即可。此典型用法的範例是將 SpEL 整合到建立 XML 或基於註解的 Bean 定義中,如Bean 定義的運算式支援所示。
本章涵蓋運算式語言的功能、其 API 及其語言語法。在多個地方,Inventor
和 Society
類別用作運算式評估的目標物件。這些類別宣告和用於填入它們的資料在本章末尾列出。
運算式語言支援以下功能
-
字面運算式
-
存取屬性、陣列、列表和 Map
-
行內列表
-
行內 Map
-
陣列建構
-
關聯運算子
-
正則運算式
-
邏輯運算子
-
字串運算子
-
數學運算子
-
賦值
-
類型運算式
-
方法調用
-
建構子調用
-
變數
-
使用者定義函數
-
Bean 參考
-
三元、Elvis 和安全導航運算子
-
集合投影
-
集合選擇
-
範本化運算式