Dataway在Spring Boot中的引入以及使用教程

Dataway是Hasor生態中的接口配置工具,能幫助開發者快速配置數據接口。它支持DataQL和SQL兩種語言模式,可將SQL轉換為DataQL執行,簡化數據查詢與交互,無需編寫大量代碼。接口配置完成后,可進行自測、冒煙測試,通過后發布,之后可通過定義的接口路徑訪問數據,且接口歷史版本等信息保存在特定數據庫表中。

引入步驟

  • 引入依賴 :在Spring Boot項目的pom.xml文件中添加Dataway相關依賴,包括hasor-springhasor-dataway,前者負責Spring與Hasor框架整合,后者是Dataway本身。

  • 配置Dataway及初始化數據表 :在application.propertiesapplication.yml文件中進行Dataway相關配置,如HASOR_DATAQL_DATAWAYHASOR_DATAQL_DATAWAY_ADMIN等,且Dataway需要兩張數據表才能工作,建表語句可在Dataway依賴jar包的“META-INF/hasor-framework/mysql”目錄下找到。

  • 配置數據源 :若項目未集成數據源,可采用druid + mysql + spring-boot-starter-jdbc的方式進行配置,添加相應依賴并設置數據源相關參數,包括數據庫地址、用戶名、密碼等。

  • 將數據源設置到Hasor容器中 :新建一個Hasor模塊類,使用@DimModule@Component注解,將該模塊交給Spring管理,并通過Spring注入數據源,在Hasor啟動時調用loadModule方法,把數據源設置到Hasor中。

  • 在Spring Boot中啟用Hasor :在Spring啟動類上增加@EnableHasor@EnableHasorWeb注解,分別在Spring中啟用Hasor和將hasor-web配置到Spring環境中,Dataway的UI是通過hasor-web提供服務。

示例代碼

以下是一個完整的示例,包括從引入依賴到創建接口的全過程:

  • 引入依賴

    <!-- Hasor核心依賴 -->
    <dependency><groupId>net.hasor</groupId><artifactId>hasor-core</artifactId><version>5.0.18</version>
    </dependency>
    <!-- Spring整合Hasor -->
    <dependency><groupId>net.hasor</groupId><artifactId>hasor-spring</artifactId><version>5.0.18</version>
    </dependency>
    <!-- Dataway -->
    <dependency><groupId>net.hasor</groupId><artifactId>hasor-dataway</artifactId><version>5.0.18</version>
    </dependency>
    <!-- 數據庫連接池 -->
    <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.10</version>
    </dependency>
  • 配置數據源及Dataway相關信息 :在application.yml文件中配置數據源和Dataway的訪問路徑等信息。

    spring:datasource:url: jdbc:mysql://localhost:3306/dataway_demousername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
    hasor:dataway:api: /api/admin: /interface-ui/
  • 創建Hasor模塊類,將數據源注入到Hasor容器

    @DimModule
    @Component
    public class ExampleModule implements SpringModule {@Autowiredprivate DataSource dataSource;@Overridepublic void loadModule(ApiBinder apiBinder) throws Throwable {apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));}
    }
  • 在Spring Boot啟動類上啟用Hasor

    @EnableHasor
    @EnableHasorWeb
    @SpringBootApplication
    public class DatawayDemoApplication {public static void main(String[] args) {SpringApplication.run(DatawayDemoApplication.class, args);}
    }
  • 在Dataway管理界面創建接口 :應用啟動后,訪問http://localhost:8080/interface-ui/進入Dataway管理界面,點擊“新建接口”按鈕,輸入接口名稱和路徑,如/getUsers,然后在查詢編輯器中編寫DataQL查詢,例如:

    var query = @@sql()<%SELECT id, name, age FROM user
    %>;
    return query();

    點擊“保存”按鈕保存接口,然后點擊“測試”按鈕測試接口是否正常工作。

  • 自定義UDF :以下是一個自定義UDF的示例,用于返回當前用戶的名字:

    @DimUdf("myNameUdf")
    @Service
    public class MyNameUdf implements Udf {@Resourceprivate MyUdfService myUdfService;@Overridepublic Object call(Hints readOnly, Object... params) {return myUdfService.myName();}
    }

    在Dataway管理界面,可以通過以下方式調用自定義UDF:

    import 'com.demo.udf.MyNameUdf' as myNameUdf;
    return myNameUdf();

    說明 :在使用Dataway之前,需要確保已正確安裝和配置了數據庫,并且數據庫中已存在所需的表和數據。同時,還需要根據實際需求對Dataway的配置進行調整,如設置接口的安全性、緩存等。

    Dataway的使用流程大致是先引入依賴,再進行相關配置,最后通過其管理界面或代碼方式創建接口。它能極大簡化數據接口的開發過程,提高開發效率。

使用Dataway管理界面自測

  • 進入管理界面:應用啟動后,在瀏覽器中輸入http://localhost:8080/interface-ui/訪問Dataway管理界面。

  • 新建接口:點擊“新建接口”按鈕,輸入接口名稱、路徑等信息,選擇使用DataQL或SQL模式編寫接口邏輯。

  • 編寫接口代碼:在查詢編輯器中編寫DataQL或SQL代碼,例如使用DataQL編寫查詢代碼。

  • 點擊測試:保存接口后,點擊“測試”按鈕,即可在管理界面中查看接口的返回結果,檢查接口是否按預期工作。

使用Dataway管理界面冒煙測試

  • 進入管理界面:訪問http://localhost:8080/interface-ui/

  • 選擇要測試的接口:找到已創建但尚未發布的接口,點擊“冒煙測試”按鈕。

  • 查看測試結果:根據冒煙測試的結果,確認接口是否符合基本要求,若通過則可以點擊“發布”按鈕正式發布接口。

使用Postman或其他HTTP客戶端測試

  • 獲取接口地址:接口發布后,根據配置的API路徑和接口路徑拼接完整的接口地址,如http://localhost:8080/api/demo

  • 發送HTTP請求:使用Postman或其他HTTP客戶端工具,按照接口的請求方法(如GET、POST等)發送請求。如果接口需要參數,需在請求中包含相應的參數。

  • 檢查響應結果:查看HTTP客戶端返回的響應結果,確認接口的返回數據是否正確,HTTP狀態碼是否為200等,以驗證接口是否正常工作。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80008.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80008.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80008.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

進程互斥的軟件實現方法

單標志法 算法思想&#xff1a;兩個進程在訪問完臨界區后會把使用臨界區的權限轉交給另一個進程。也就是說每個進程進入臨界區的權限只能被另一個進程賦予 int turn 0; //turn 表示當前允許進入臨界區的進程號P0 進程&#xff1a; while (turn ! 0); ① //進入區 critical …

力扣150題-- 匯總區間和合并區間

Day 27 題目描述 思路 做法&#xff1a; 特殊處理空數組和數組只有一個元素的情況設置beg&#xff0c;end標記范圍的起始和結束&#xff0c;x用來比較元素是否有序&#xff08;初始end和beg都指向nums[0[,x為nums[0]1&#xff09;遍歷數組如果當前元素等于x&#xff0c;說明…

【c++深入系列】:萬字string詳解(附有sso優化版本的string模擬實現源碼)

&#x1f525; 本文專欄&#xff1a;c &#x1f338;作者主頁&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客勵志語錄&#xff1a; 當你想放棄時&#xff0c;想想為什么當初堅持走到了這里 ★★★ 本文前置知識&#xff1a; 類和對象&#xff08;上&#xff09; 類和對…

Spark-Streaming簡介和核心編程

Spark-Streaming簡介 概述&#xff1a;用于流式數據處理&#xff0c;支持Kafka、Flume等多種數據輸入源&#xff0c;可使用Spark原語運算&#xff0c;結果能保存到HDFS、數據庫等。它以DStream&#xff08;離散化流&#xff09;為抽象表示&#xff0c;是RDD在實時場景的封裝&am…

verilog中的約束信息

1、保持約束 keep&#xff1a;當編譯器在對FPGA設計進行映射時&#xff0c;一些線網將會被吸收到邏輯塊中。 (* KEEP "{TRUE | FALSE}" *) keep_hierarchy:vivado默認會把設計變成一級一級模塊化的調用轉換為一個沒有子模塊的超大模塊。這個約束會保留部分層級關系…

Missashe考研日記-day24

Missashe考研日記-day24 1 專業課408 學習時間&#xff1a;2h30min學習內容&#xff1a; 今天把剩下的兩個經典同步問題和管程部分的課看了&#xff0c;然后做課后習題。這部分的重點在PV大題&#xff0c;很多很經典&#xff0c;不過第一輪不打算做大題&#xff0c;把選擇題做…

力扣每日打卡17 49. 字母異位詞分組 (中等)

力扣 49. 字母異位詞分組 中等 前言一、題目內容二、解題方法1. 哈希函數2.官方題解2.1 前言2.2 方法一&#xff1a;排序2.2 方法二&#xff1a;計數 前言 這是刷算法題的第十七天&#xff0c;用到的語言是JS 題目&#xff1a;力扣 49. 字母異位詞分組 (中等) 一、題目內容 給…

C#抽象類和虛方法的作用是什么?

抽象類 (abstract class)&#xff1a; 不能直接實例化&#xff0c;只能被繼承。 用來定義一套基礎框架和規范&#xff0c;強制子類必須實現某些方法&#xff08;抽象方法&#xff09;。 可用來封裝一些共通的邏輯&#xff0c;減少代碼重復。 虛方法 (virtual)&#xff1a; …

PowerBi中ALLEXCEPT怎么使用?

在 Power BI 的 DAX 中&#xff0c;ALLEXCEPT() 是一個非常重要的函數&#xff0c;用來實現**“在保留部分篩選條件的前提下&#xff0c;移除其他所有篩選器”**&#xff0c;它常用于 同比、占比、累計匯總 等分析中。 ? 一、ALLEXCEPT 是什么意思&#xff1f; 函數全稱&…

IQ信號和實信號的關系與轉換的matlab實現

IQ信號 IQ信號通常是指兩路正交的信號(I路和Q路),在實際信號采樣中,通常會進行IQ采樣,將實信號轉換為復基帶信號進行存儲。 IQ信號轉實信號 IQ信號轉為實信號,其實就是將IQ兩路正交信號通過上變頻合并為一個實數的帶通信號,這通常在通信系統中用于將基帶信號調制到載…

【鋰電池剩余壽命預測】LSTM長短期記憶神經網絡鋰電池剩余壽命預測(Matlab源碼)

目錄 效果一覽程序獲取程序內容代碼分享研究內容基于LSTM長短期記憶神經網絡的鋰電池剩余壽命預測摘要關鍵詞1. 引言1.1 研究背景1.2 研究現狀與問題1.3 研究目的與意義2. 文獻綜述2.1 鋰電池剩余壽命預測方法概述2.2 傳統預測方法的優勢與不足2.3 LSTM在鋰電池壽命預測中的應用…

具身智能的理論基礎

引言 在人工智能與認知科學快速發展的背景下&#xff0c;“具身智能”&#xff08;Embodied Intelligence&#xff09;這一概念日益受到重視。具身智能是指智能體的認知能力不僅源于其大腦&#xff08;或中央處理單元&#xff09;&#xff0c;更根植于其身體的結構、感官與其所…

【數據結構】勵志大廠版·初級(二刷復習)雙鏈表

前引&#xff1a;今天學習的雙鏈表屬于鏈表結構中最復雜的一種&#xff08;帶頭雙向循環鏈表&#xff09;&#xff0c;按照安排&#xff0c;我們會先進行復習&#xff0c;如何實現雙鏈表&#xff0c;如基本的頭插、頭刪、尾刪、尾插&#xff0c;掌握每個細節&#xff0c;隨后進…

CSS `display` 屬性詳解(完整版)

CSS display 屬性詳解&#xff08;完整版&#xff09; 1. 屬性值及特性詳解 display 屬性控制元素的布局類型和生成的框類型&#xff0c;以下是 所有有效值 及其特性&#xff1a; 1.1 基礎類型 值描述布局行為是否生成塊級框典型用途block元素獨占一行&#xff0c;寬度自動撐…

【數據結構 · 初階】- 堆的實現

目錄 一.初始化 二.插入 三.刪除&#xff08;堆頂、根&#xff09; 四.整體代碼 Heap.h Test.c Heap.c 我們使用順序結構實現完全二叉樹&#xff0c;也就是堆的實現 以前學的數據結構只是單純的存儲數據。堆除了存儲數據&#xff0c;還有其他的價值——排序。是一個功能…

qt.tlsbackend.ossl: Failed to load libssl/libcrypto.

我的環境是windows&#xff0c;QT6.3.2&#xff08;msvc2019_64/mingw_64&#xff09; 出錯原因 QT沒有正確加載OpenSSL。 解決過程 1、確保安裝的有openssl。 文章結尾有個注意&#xff0c;是其他方式安裝過openssl&#xff0c;環境變量有&#xff0c;但是QT找不到的問題。…

【Linux】用戶權限

shell命令 1. Linux本質上是一個操作系統&#xff0c;但是一般的用戶不能直接使用它&#xff0c;而是需要通過外殼程序shell&#xff0c;來與Linux內核進行溝通。 2. shell的簡單定義&#xff1a;命令行解釋器。主要包含以下作用&#xff1a; 將使用者的命令翻譯給核心處理。將…

賽靈思 XC7K325T-2FFG900I FPGA Xilinx Kintex?7

XC7K325T-2FFG900I 是 Xilinx Kintex?7 系列中一款工業級 (I) 高性能 FPGA&#xff0c;基于 28 nm HKMG HPL 工藝制程&#xff0c;核心電壓標稱 1.0 V&#xff0c;I/O 電壓可在 0.97 V–1.03 V 之間靈活配置&#xff0c;并可在 –40 C 至 100 C 溫度范圍內穩定運行。該器件提供…

【題解-Acwing】847. 圖中點的層次

題目:847. 圖中點的層次 題目描述 給定一個 n 個點 m 條邊的有向圖,圖中可能存在重邊和自環。 所有邊的長度都是 1,點的編號為 1~n。 請你求出 1 號點到 n 號點的最短距離,如果從 1 號點無法走到 n 號點,輸出 ?1 。 輸入 第一行包含兩個整數 n 和 m。 接下來 m 行…

css圖片設為灰色

使用filter方式將圖片設置為灰色 普通圖片使用&#xff1a;filter: saturate(0); 純白圖片使用&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"width…