成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot 搭配 QLExpress 動態腳本引擎,解鎖復雜業務邏輯新玩法!

開發 前端
QLExpress 作為一款輕量級、功能強大的動態腳本引擎,為 Java 開發者提供了一種高效、靈活的方式來實現復雜業務邏輯。結合 Spring Boot 3.4,可以讓業務規則動態調整,而無需修改核心代碼,極大地提高了系統的擴展性。

在現代企業級應用中,業務規則的靈活性至關重要。規則引擎的引入,使得系統可以通過動態配置的方式管理業務邏輯,而不需要頻繁修改代碼,從而提升了系統的可維護性與可擴展性。

在眾多規則引擎方案中,QLExpress 以其簡潔的語法、高效的執行性能以及強大的擴展能力,成為一個頗具競爭力的選擇。QLExpress 由阿里巴巴開發,廣泛應用于電商、金融等高并發場景,支持布爾邏輯、數學運算、表達式解析以及動態腳本執行。

QLExpress 的主要特性

  • 線程安全腳本運行時的臨時變量基于 ThreadLocal 機制,保證了并發安全。
  • 高效執行支持腳本編譯緩存機制,并利用變量池優化運行時臨時變量的創建,與 Groovy 運行效率相當。
  • 弱類型腳本語言語法風格類似于 JavaScript 和 Groovy,提高了業務邏輯的靈活性。
  • 安全機制提供防止死循環、高危 API 調用等安全控制措施。
  • 輕量級核心依賴包體積僅 250KB,適用于所有 Java 運行環境。

接下來,我們將基于 Spring Boot 3.4 介紹如何集成和使用 QLExpress。

QLExpress 實戰

引入依賴

在 pom.xml 文件中添加以下依賴:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>QLExpress</artifactId>
    <version>3.3.3</version>
</dependency>

無需額外配置,即可在項目中直接使用 QLExpress。

基本示例

下面是一個簡單的示例,展示如何使用 QLExpress 進行數學運算:

package com.icoderoad.qlexpress;


import com.ql.util.express.DefaultContext;
import com.ql.util.express.ExpressRunner;


public class QLExpressDemo {
    public static void main(String[] args) throws Exception {
        ExpressRunner runner = new ExpressRunner();
        DefaultContext<String, Object> context = new DefaultContext<>();


        context.put("a", 1);
        context.put("b", 2);
        context.put("c", 3);


        String express = "a + b * c";
        Object result = runner.execute(express, context, null, true, false);


        System.out.printf("%s = %s%n", express, result);
    }
}

運行上述代碼,將輸出:

a + b * c = 7

可以看到,QLExpress 語法類似于 Java 的表達式計算方式,使用起來非常直觀。

語法規則

QLExpress 支持如下運算符:

  • 算術運算+ - * / % mod(取模)
  • 比較運算< > <= >= == != <>
  • 邏輯運算&& || !
  • 流程控制if else、for、break、continue

示例:計算 1 到 n 的累加和

String express = """
    for(i = 1; i <= n; i++) {
        sum = sum + i;
    }
    return sum;
""";

對象操作

QLExpress 允許在表達式中創建和操作 Java 對象:

String express = """
    import com.icoderoad.service.PersonService;
    import com.icoderoad.model.Person;
    
    ps = new PersonService();
    ps.save(new Person());
""";

自定義函數

我們可以在表達式中定義函數,提高代碼復用性:

String express = """
    function add(int a, int b) {
        return a + b;
    }
    return Math.PI + add(arg1, arg2);
""";

關鍵字別名

QLExpress 允許開發者自定義關鍵字的別名,使表達式更加易讀。

runner.addOperatorWithAlias("如果", "if", null);
runner.addOperatorWithAlias("否則", "else", null);
runner.addOperatorWithAlias("返回", "return", null);
String express = "如果(a > b) { 返回 1; } 否則 { 返回 0; }";

綁定 Java 方法

我們可以將 Java 方法綁定到 QLExpress,方便在表達式中調用:

runner.addFunctionOfClassMethod("四舍五入", CommonService.class, "roundUp", new Class[]{double.class}, null);
String express = "四舍五入(56.54788)";
Object result = runner.execute(express, null, null, true, false);

宏定義

宏定義類似于表達式模板,可以簡化復雜計算:

runner.addMacro("計算平均成績", "(語文 + 數學 + 英語) / 3.0");
runner.addMacro("是否優秀", "計算平均成績 > 90");

變量查詢

QLExpress 允許我們獲取表達式中使用的變量列表,以便動態分析:

String express = """
    int ret = (a + b + Math.PI * c ) / 4;
    return ret;
""";
String[] vars = runner.getOutVarNames(express);
for (String var : vars) {
    System.out.printf("var: %s%n", var);
}

結語

QLExpress 作為一款輕量級、功能強大的動態腳本引擎,為 Java 開發者提供了一種高效、靈活的方式來實現復雜業務邏輯。結合 Spring Boot 3.4,可以讓業務規則動態調整,而無需修改核心代碼,極大地提高了系統的擴展性。

希望本文的講解能夠幫助你更好地理解和使用 QLExpress,在項目中靈活運用它的強大功能!

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-02-04 11:30:10

2025-04-17 02:00:00

2023-05-30 07:56:23

代碼軟件開發

2014-09-11 15:05:40

驅動設計驅動開發

2020-09-27 14:24:58

if-else cod業務

2023-07-17 18:39:27

業務系統架構

2022-04-07 17:30:31

Flutter攜程火車票渲染

2022-07-04 19:02:06

系統業務思考

2024-12-20 19:38:01

ToB業務狀態轉換

2025-04-29 07:44:26

配置校驗機制

2022-10-26 07:14:25

Spring 6Spring業務

2017-04-21 07:41:37

iOS自動化測試容器

2019-08-14 08:52:40

業務代碼運營

2023-02-24 18:47:37

供應鏈實時數倉

2024-09-26 16:48:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产乱码精品一区二区三区五月婷 | 国产色网 | 久久av综合 | 激情五月婷婷在线 | 青青激情网 | 国产欧美精品一区二区色综合朱莉 | 精品久久久久久久人人人人传媒 | 午夜精品久久久久久久久久久久久 | 丝袜毛片| 久久精品亚洲欧美日韩久久 | www.4虎影院| 91久久综合亚洲鲁鲁五月天 | 成人黄色av网站 | 成人a视频片观看免费 | 日韩成人在线视频 | 在线国产一区 | 九九免费| 在线观看国产三级 | 亚洲综合色网 | 成人国产免费观看 | 日韩毛片播放 | 中文字幕在线免费视频 | 亚洲欧美日韩中文在线 | 蜜桃在线一区二区三区 | 欧美日韩电影一区二区 | 中文字幕高清免费日韩视频在线 | 欧美日韩一区二区电影 | 国产乱码一二三区精品 | 91精品国产高清一区二区三区 | 成人性视频在线播放 | 99国产精品99久久久久久粉嫩 | 国产aaaaav久久久一区二区 | 久久久国产一区二区三区 | 欧美日韩在线一区二区 | 黄a网站| 91精品国产欧美一区二区 | 一区在线观看 | 美女久久视频 | 国产精品海角社区在线观看 | 午夜影院 | 国产在线精品一区二区 |