日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

sple表达式_学习Spring表达式语言(SpEL)

發布時間:2025/3/19 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sple表达式_学习Spring表达式语言(SpEL) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概觀

Spring Expression Language(縮寫為SpEL)是一種強大的表達式語言。在Spring產品組合中,它是表達式計算的基礎。它支持在運行時查詢和操作對象圖,它可以與基于XML和基于注解的Spring配置還有bean定義一起使用。由于它能夠在運行時動態分配值,因此可以為我們節省大量Java代碼。

項目設置

對于Maven項目,應使用以下依賴項:

前兩個依賴項 spring-core 和 spring-context 是SpEL需要的,另外兩個依賴項 javax.mail 和 commons-io 是被使用在實際的SpEL例子中的。

語法和特征

SpEL支持標準數學運算符,關系運算符,邏輯運算符,條件運算符,集合和正則表達式等。它可用于將bean或bean屬性注入另一個bean,還支持bean的方法調用。以下是SpEL的一些基本功能和操作符:

文字表達式可用于SpEL表達式。例如,“Hello SpEL”是一個字符串文字。如果此文字用作SpEL表達式,則結果值也將為“Hello SpEL”。SpEL表達式支持方法調用。例如,可以從String文字中調用concat方法。SpEL表達式支持數學運算符。所有基本運算符,如加法(+),減法( - ),乘法(*),除法(/),模數(%),指數冪(^)等,都可以在SpEL表達式中使用。

關系運算符等于(==),不等于(!=),小于(),大于或等于(> =)在SpEL表達式中同樣支持。要在基于XML的配置中使用關系運算符,應使用文本等效項eq,ne,lt,le,gt,ge。支持邏輯運算符,與(&&)或(||)非(!),也可以使用等價文本。三元運算符用于在SpEL表達式中執行if-then-else條件邏輯。當我們需要根據某些條件注入值時,它很有用。

Elvis算子是三元運算符的縮短形式。三元運算符的一個常見用途是對變量進行空值檢查,然后返回變量值或默認值,Elvis操作很方便。SpEL表達式支持使用正則表達式,我們需要使用matches運算符來檢查字符串是否與給定的正則表達式匹配。我們將使用一個實現了ExpressionParser接口的SpelExpressionParser 來解析SpEL表達式,調用SpelExpressionParser 的 parseExpression 方法將返回 SpelExpression 的實例,該實例實現了表達式接口。通過調用 getValue 獲取計算結果,代碼如下所示:

現在,我們已經使用默認的上下文計算了SpEL表達式??梢葬槍μ囟▽ο髮嵗嬎鉙pEL表達式,該對象實例通常被稱為根對象,讓我們定義一個Bean并將其用作計算的上下文。

我們將通過創建StandardEvaluationContext的實例來生成計算上下文, 它將根對象(在我們的例子中為SampleBean)作為其構造函數中的參數。 要記住的一件事是StandardEvaluationContext實例的創建是開銷很大的。 因此,我們應該盡可能地緩存和重用它們。 以下是針對根對象計算SpEL表達式的一些用法:

我們可以訪問bean的屬性值。我們可以將bean的屬性值與某個特定值進行比較。我們可以訪問bean的List屬性的內容。 可以使用方括號表示法訪問List的項目,括號內是項目的索引。我們可以訪問bean的map屬性的內容, 也可以使用方括號表示法訪問map的內容,必須在括號內提供鍵值。代碼如下:

Bean 定義中的 SpEL

bean定義中可以使用SpEL表達式, 它可以與基于XML和基于注解的配置一起使用。 SpEL表達式以哈希符號(#)開頭,并用大括號括起來。 因此,它遵循形式#{}, SpEL表達式可用于引用bean或bean的屬性/方法。 以下是基于注解的配置示例:

實際例子

我們已經了解了SpEL表達式的基本功能。 現在,讓我們將它應用于一個有趣的實際例子中。 假設我們要向用戶發送HTML電子郵件, 應在運行時動態地將一些值注入HTML模板中。 在這種情況下,在HTML模板中使用SpEL表達式可能是一個很好的解決方案。 以下是包含SpEL表達式的HTML模板示例:

在上面的例子中,我們在SpEL表達式中使用了User bean,這是前面定義的, 我們還在SpEL表達式中使用了Company bean。 以下是Company bean的定義:

現在我們如何在HTML模板中注入值? 我們必須迭代HTML模板的內容并找出其中使用的所有SpEL表達式,必須解析和計算每個SpEL表達式,我們必須用計算好的值來替換HTML模板中所有SpEL表達式。這里我們必須使用根對象BeanExpressionContext,我們的ApplicationContext中的BeanFactory將被用于創建BeanExpressionContext的實例。

對于發送電子郵件,我們將使用標準JavaMail API,我們將使用QQ的SMTP作為SMTP服務器,其他SMTP服務器也可以以相同的方式使用。 這是完整的例子:

總結

在本文中,我們通過一些小例子了解了Spring表達式語言的基本特性和語法。 這是Spring框架的一個強大功能。 它可以應用于Spring框架開發的任何企業應用程序的各個領域。如有問題,歡迎點評和指正,也歡迎點贊和轉發。

總結

以上是生活随笔為你收集整理的sple表达式_学习Spring表达式语言(SpEL)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。