序曲
-
今天是五月初五端午節(jié)焚虱,盡享傳統(tǒng)飲食:早上煮雞蛋购裙、面條荷包蛋、粽子鹃栽;中午餃子躏率。記錄一下黑腿配白腳(餃)。黑腿配白腳(餃)
- 另外民鼓,啟用我的頂級(jí)域名
package com.erbadagang.*
薇芝。
言歸正傳,好記憶不如爛筆頭丰嘉,今天記錄一下Dataway 數(shù)據(jù)接口配置服務(wù)
夯到,作者趙永春,支持國貨饮亏!
Dataway 數(shù)據(jù)接口配置服務(wù)
依托 DataQL 服務(wù)聚合能力耍贾,為應(yīng)用提供一個(gè) UI 界面。并以 jar 包的方式集成到應(yīng)用中路幸。 通過 Dataway 可以直接在界面上配置和發(fā)布接口荐开。
一、簡介
這種模式的革新使得開發(fā)一個(gè)接口不必在編寫任何形式的代碼简肴,只需要配置一條 DataQL 查詢即可完成滿足前端對接口的需求晃听。 從而避免了從數(shù)據(jù)庫到前端之間一系列的開發(fā)配置任務(wù),例如:Mapper着帽、DO杂伟、DAO、Service仍翰、Controller 統(tǒng)統(tǒng)不在需要赫粥。
Dataway特意采用了 jar包集成的方式發(fā)布,這使得任意的老項(xiàng)目都可以無侵入的集成 Dataway予借。 直接改進(jìn)老項(xiàng)目的迭代效率越平,大大減少企業(yè)項(xiàng)目研發(fā)成本。
基于 Spring Boot 項(xiàng)目使用 Dataway 來簡單的配置接口灵迫。Dataway 的方式確實(shí)給人耳目一新秦叛,一個(gè)接口竟然可以如此簡單的配置出來無需開發(fā)任何一行java代碼,也不需要做任何 Mapping 實(shí)體映射綁定瀑粥。
整個(gè)接口配置挣跋、測試、冒煙狞换、發(fā)布避咆。一站式都通過 Dataway 提供的 UI 界面完成舟肉。UI 會(huì)以 Jar 包方式提供并集成到應(yīng)用中并和應(yīng)用共享同一個(gè) http 端口,應(yīng)用無需單獨(dú)為 Dataway 開辟新的管理端口查库。
這種內(nèi)嵌集成方式模式的優(yōu)點(diǎn)是路媚,可以使得大部分老項(xiàng)目都可以在無侵入的情況下直接應(yīng)用 Dataway。進(jìn)而改進(jìn)老項(xiàng)目的迭代效率樊销,大大減少企業(yè)項(xiàng)目研發(fā)成本整慎。
二、 工作機(jī)制
如上圖所示 Dataway 在開發(fā)模式上提供了巨大的便捷围苫。雖然工作流程中標(biāo)識(shí)了由后端開發(fā)來配置 DataQL 接口裤园,但這主要是出于考慮接口責(zé)任人。 但在實(shí)際工作中根據(jù)實(shí)際情況需要剂府,配置接口的人員可以是產(chǎn)品研發(fā)生命周期中任意一名角色比然。
三、使用場景
主打場景并不是說 Dataway 適用范圍僅限于此周循,而是經(jīng)過多次項(xiàng)目實(shí)踐。我們認(rèn)為下面這些場景會(huì)有非常好的預(yù)期效果万俗。 比如說 取數(shù)據(jù) 在一些報(bào)表湾笛、看板項(xiàng)目中即便是取數(shù)據(jù)邏輯在復(fù)雜。我們依然做到了真正的 零 開發(fā)闰歪,所有取數(shù)邏輯全部通過 DataQL + SQL 的方式滿足嚎研。 對比往期項(xiàng)目對于后端技術(shù)人員的需求從 3~5 人的苦逼通宵加班,直接縮減為 1人配置化搞定库倘。
再比如临扮,某個(gè)內(nèi)部類 ERP 項(xiàng)目,20多個(gè)表單頁面教翩,后端部分僅有 1000 行左右的核心代碼杆勇。其它數(shù)據(jù)存取邏輯全部配置化完成。
3.1 取數(shù)據(jù)
- 在一些
報(bào)表饱亿、看板
純展示類的項(xiàng)目中蚜退。我們做到了所有接口真正的零
開發(fā)全配置。所有取數(shù)邏輯全部通過 DataQL + SQL 的方式滿足彪笼。 在此期間遇到最大的挑戰(zhàn)是復(fù)雜查詢中需要拼SQL
钻注,隨著 DataQL 查詢組件的完善,這一問題被攻克配猫。 - 對比往期項(xiàng)目對于后端技術(shù)人員的需求從 3~5 人的苦逼通宵加班幅恋,直接縮減為 1 人配置化搞定 。即便是第二天要上線新的邏輯泵肄,通過 DataQL + SQL捆交。依然可以分分鐘滿足需求變更[吹牛進(jìn)行中......]淑翼。
總結(jié):如果你只想從數(shù)據(jù)庫或者服務(wù)中獲取某類數(shù)據(jù),不需要: VO零渐、BO窒舟、Convert、DO诵盼、Mapper 這類東西惠豺。
3.2 存數(shù)據(jù)
如果是從頁面表單遞交數(shù)據(jù)到數(shù)據(jù)庫或者服務(wù),免去 BO风宁、FormBean洁墙、DO、Mapper 這類東西戒财。如:某個(gè) ERP 項(xiàng)目中热监,20多個(gè)表單頁面。每個(gè)表單頁面或多或少都有直接將單據(jù)數(shù)據(jù)錄入到數(shù)據(jù)庫的場景饮寞,每個(gè)單據(jù)的錄入邏輯都有很大的不同孝扛。 其它數(shù)據(jù)存取邏輯全部配置化完成。
3.3 數(shù)據(jù)聚合
基于服務(wù)調(diào)用結(jié)果經(jīng)過結(jié)構(gòu)轉(zhuǎn)換并響應(yīng)給前端幽崩。將數(shù)據(jù)庫和服務(wù)等多個(gè)結(jié)果進(jìn)行匯聚然后返回給前端苦始。和 GraphQL 相同,這是設(shè)計(jì) DataQL 的初衷慌申。將數(shù)據(jù)庫和服務(wù)等多個(gè)結(jié)果進(jìn)行匯聚然后返回給前端陌选,這是 DataQL 的使命。 Dataway 是這一過程變得更加簡單和高效蹄溉。
四咨油、 Spring Boot 整合
Dataway 是 Hasor 生態(tài)中的一員,使用 Dataway 第一步需要通過 hasor-spring 打通兩個(gè)生態(tài)柒爵。
4.1 引入依賴
根據(jù)官方文檔中推薦的方式我們將 Hasor 和 Spring Boot 整合起來役电。這里是原文:原文。
查看最新版本:https://mvnrepository.com/artifact/net.hasor/hasor-dataway
<!-- 引入hasor依賴 -->
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-spring</artifactId>
<version>4.1.8</version><!-- 查看最新版本:https://mvnrepository.com/artifact/net.hasor/hasor-spring -->
</dependency>
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-dataway</artifactId>
<version>4.1.8</version><!-- 查看最新版本:https://mvnrepository.com/artifact/net.hasor/hasor-dataway -->
</dependency>
hasor-spring 負(fù)責(zé) Spring 和 Hasor 框架之間的整合棉胀。
hasor-dataway 是工作在 Hasor 之上宴霸,利用 hasor-spring 我們就可以使用 dataway了。
4.2 啟用 Hasor
在SprintBoot 中啟用 Hasor,這一步非常簡單膏蚓,只需要在 Spring 啟動(dòng)類上增加兩個(gè)注解即可瓢谢。
@EnableHasor() // 在Spring 中啟用 Hasor
@EnableHasorWeb() // 將 hasor-web 配置到 Spring 環(huán)境中,Dataway 的 UI 是通過 hasor-web 提供服務(wù)驮瞧。
4.3 啟用 Dataway
然后第二步氓扛,在應(yīng)用的application.properties
配置文件中啟用 Dataway
# 啟用 Dataway 功能(默認(rèn)不啟用)
HASOR_DATAQL_DATAWAY=true
# 開啟 ui 管理功能(注意生產(chǎn)環(huán)境必須要設(shè)置為 false,否則會(huì)造成嚴(yán)重的生產(chǎn)安全事故)
HASOR_DATAQL_DATAWAY_ADMIN=true
# (可選)API工作路徑
HASOR_DATAQL_DATAWAY_API_URL=/api/
# (可選)ui 的工作路徑,只有開啟 ui 管理功能后才有效
HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/
Dataway 一共涉及到 5個(gè)可以配置的配置項(xiàng)采郎,但不是所有配置都是必須的千所。
其中 HASOR_DATAQL_DATAWAY、HASOR_DATAQL_DATAWAY_ADMIN 兩個(gè)配置是必須要打開的蒜埋,默認(rèn)情況下 Datawaty 是不啟用的淫痰。
4.4 初始化必要的表(例:MySQL)
CREATE TABLE `interface_info` (
`api_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`api_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT整份、POST',
`api_path` varchar(512) NOT NULL COMMENT '攔截路徑',
`api_status` int(2) NOT NULL COMMENT '狀態(tài):0草稿待错,1發(fā)布,2有變更烈评,3禁用',
`api_comment` varchar(255) NULL COMMENT '注釋',
`api_type` varchar(24) NOT NULL COMMENT '腳本類型:SQL火俄、DataQL',
`api_script` mediumtext NOT NULL COMMENT '查詢腳本:xxxxxxx',
`api_schema` mediumtext NULL COMMENT '接口的請求/響應(yīng)數(shù)據(jù)結(jié)構(gòu)',
`api_sample` mediumtext NULL COMMENT '請求/響應(yīng)/請求頭樣本數(shù)據(jù)',
`api_option` mediumtext NULL COMMENT '擴(kuò)展配置信息',
`api_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`api_gmt_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
PRIMARY KEY (`api_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway 中的API';
CREATE TABLE `interface_release` (
`pub_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Publish ID',
`pub_api_id` int(11) NOT NULL COMMENT '所屬API ID',
`pub_method` varchar(12) NOT NULL COMMENT 'HttpMethod:GET、PUT讲冠、POST',
`pub_path` varchar(512) NOT NULL COMMENT '攔截路徑',
`pub_status` int(2) NOT NULL COMMENT '狀態(tài):0有效瓜客,1無效(可能被下線)',
`pub_type` varchar(24) NOT NULL COMMENT '腳本類型:SQL、DataQL',
`pub_script` mediumtext NOT NULL COMMENT '查詢腳本:xxxxxxx',
`pub_script_ori` mediumtext NOT NULL COMMENT '原始查詢腳本竿开,僅當(dāng)類型為SQL時(shí)不同',
`pub_schema` mediumtext NULL COMMENT '接口的請求/響應(yīng)數(shù)據(jù)結(jié)構(gòu)',
`pub_sample` mediumtext NULL COMMENT '請求/響應(yīng)/請求頭樣本數(shù)據(jù)',
`pub_option` mediumtext NULL COMMENT '擴(kuò)展配置信息',
`pub_release_time`datetime DEFAULT CURRENT_TIMESTAMP COMMENT '發(fā)布時(shí)間(下線不更新)',
PRIMARY KEY (`pub_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 發(fā)布?xì)v史谱仪。';
create index idx_interface_release on interface_release (pub_api_id);
4.5 初始化數(shù)據(jù)源
配置數(shù)據(jù)源
作為 Spring Boot 項(xiàng)目有著自己完善的數(shù)據(jù)庫方面工具支持。我們這次采用 druid + mysql + spring-boot-starter-jdbc 的方式否彩。
首先引入依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
然后增加數(shù)據(jù)源的配置
# db
spring.datasource.url=jdbc:mysql://xxxxxxx:3306/example
spring.datasource.username=xxxxx
spring.datasource.password=xxxxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type:com.alibaba.druid.pool.DruidDataSource
# druid
spring.datasource.druid.initial-size=3
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10
spring.datasource.druid.max-wait=60000
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1
最后一步芽卿,將 Spring 使用的數(shù)據(jù)源導(dǎo)入到 Hasor 環(huán)境供 Dataway 使用。Spring Boot 和 Hasor 本是兩個(gè)獨(dú)立的容器框架胳搞,我們做整合之后為了使用 Dataway 的能力需要把 Spring 中的數(shù)據(jù)源設(shè)置到 Hasor 中。
首先新建一個(gè) Hasor 的 模塊称杨,并且將其交給 Spring 管理肌毅。然后把數(shù)據(jù)源通過 Spring 注入進(jìn)來。
package com.erbadagang.dataway.springmodule;
import net.hasor.core.ApiBinder;
import net.hasor.core.DimModule;
import net.hasor.db.JdbcModule;
import net.hasor.db.Level;
import net.hasor.spring.SpringModule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
@DimModule
@Component
public class ExampleModule implements SpringModule {
@Autowired
private DataSource dataSource = null;
@Override
public void loadModule(ApiBinder apiBinder) throws Throwable {
// .DataSource form Spring boot into Hasor
apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));
// .custom DataQL
//apiBinder.tryCast(QueryApiBinder.class).loadUdfSource(apiBinder.findClass(DimUdfSource.class));
//apiBinder.tryCast(QueryApiBinder.class).bindFragment("sql", SqlFragment.class);
}
}
4.6 啟動(dòng)工程
在啟動(dòng)日志中看到下列信息輸出就表示 Dataway 已經(jīng)可以正常訪問了姑原。
_ _ ____ _
| | | | | _ \ | |
| |__| | __ _ ___ ___ _ __ | |_) | ___ ___ | |_
| __ |/ _` / __|/ _ \| '__| | _ < / _ \ / _ \| __|
| | | | (_| \__ \ (_) | | | |_) | (_) | (_) | |_
|_| |_|\__,_|___/\___/|_| |____/ \___/ \___/ \__|
2020-06-25 10:59:37.476 INFO 13316 --- [ main] n.hasor.core.context.TemplateAppContext : loadModule class net.hasor.dataway.config.DatawayModule
2020-06-25 10:59:37.476 INFO 13316 --- [ main] net.hasor.dataway.config.DatawayModule : dataway api workAt /api/
2020-06-25 10:59:37.476 INFO 13316 --- [ main] n.h.c.environment.AbstractEnvironment : var -> HASOR_DATAQL_DATAWAY_API_URL = /api/.
2020-06-25 10:59:37.482 INFO 13316 --- [ main] net.hasor.dataway.config.DatawayModule : dataway self isolation ->net.hasor.dataway.config.DatawayModule
2020-06-25 10:59:37.483 INFO 13316 --- [ main] net.hasor.dataway.config.DatawayModule : dataway admin workAt /interface-ui/
dataway api workAt /api/
表示 API 的工作路徑悬而。dataway admin workAt /interface-ui/
表示 管理配置界面的地址。
此時(shí)訪問:http://<yourIP>:<yourProt>/interface-ui/
就可以看到配置頁面了锭汛。
五笨奠、訪問接口管理頁面進(jìn)行接口配置
在瀏覽器中輸入 “http://127.0.0.1:8080/interface-ui/” 就可以看到期待已久的界面了。
5.1 接口狀態(tài)流轉(zhuǎn)
Editor:編輯狀態(tài)唤殴,接口不可訪問般婆。
SmokeTest:冒煙測試是一個(gè)動(dòng)作。只有冒煙測試通過之后才能進(jìn)行發(fā)布操作朵逝,冒煙測試狀態(tài)不會(huì)被持久保存蔚袍。
Published:接口已發(fā)布可以正常訪問,并且無增量變化。
Changes:接口已經(jīng)發(fā)布可以正常訪問啤咽,但是有后續(xù)變更尚未發(fā)布晋辆。此時(shí)訪問接口是上一次發(fā)布的查詢邏輯。
Disable:無效接口宇整,說明接口曾經(jīng)發(fā)布成功過瓶佳。此時(shí)將接口進(jìn)行下線處理。在編輯器頁面可以修改重新發(fā)布鳞青。
Delete:接口已刪除霸饲,被刪除的接口會(huì)被真正的物理刪除。interface_release 表中會(huì)保留歷史數(shù)據(jù)盼玄。
5.2 新增接口
點(diǎn)擊頁面頂部的 New 就可以進(jìn)入新增接口頁面贴彼。
5.2 表內(nèi)數(shù)據(jù)
表數(shù)據(jù)內(nèi)容
5.3 執(zhí)行
在任意的編輯器界面中(新增模式 or 編輯模式),都可以直接在編輯區(qū)編寫 SQL 查詢并通過右上角的 Execute
按鈕執(zhí)行埃儿。
-
另外一個(gè)稍為復(fù)雜進(jìn)行關(guān)聯(lián)查詢的例子:關(guān)聯(lián)查詢
sql語句:
-- 關(guān)聯(lián)查詢,根據(jù)商品id和訂單用戶查詢關(guān)聯(lián)信息器仗。
select * from product p,orders o
where p.id= #{productID} and
o.product_id=#{productID} and
o.user_id=#{userId};
傳入?yún)?shù):
{
"productID": "1",
"userId": "1",
"payAmount": "10"
}
返回結(jié)果:
{
"success": true,
"message": "OK",
"code": 0,
"lifeCycleTime": 133,
"executionTime": 130,
"value": [
{
"id": 1,
"stock": 8,
"last_update_time": 1592512852000,
"user_id": 1,
"product_id": 1,
"pay_amount": 2,
"add_time": 1592512852000
},
{
"id": 4,
"stock": 8,
"last_update_time": 1592599603000,
"user_id": 1,
"product_id": 1,
"pay_amount": 1,
"add_time": 1592599603000
}
]
}
5.4 冒煙測試
點(diǎn)擊保存按鈕后可點(diǎn)擊冒煙測試按鈕進(jìn)行冒煙測試。是否已經(jīng)冒煙測試的狀態(tài)未持久化童番,本地點(diǎn)擊后按鈕置灰精钮,下一次再進(jìn)入還可以點(diǎn)擊。只有冒煙測試通過后才能進(jìn)行下面的發(fā)布操作剃斧。5.5 發(fā)布
當(dāng)接口開發(fā)配置完成轨香,需要將其發(fā)布以供使用。一個(gè)接口的發(fā)布上線要經(jīng)歷三個(gè)過程幼东,具體如下:
- Execute臂容,調(diào)試當(dāng)前編輯器中的 DataQL 查詢。
- Smoke Test根蟹,冒煙測試脓杉。和 Execute 不同,Smoke 同樣是執(zhí)行 DataQL 查詢并要求查詢正常執(zhí)行完畢简逮。 但是區(qū)別 Execute 的是: Smoke 不會(huì)使用本地編輯器中的語句球散,而是到數(shù)據(jù)庫中獲取對應(yīng)的查詢語句。 因?yàn)榻涌诘陌l(fā)布也是將數(shù)據(jù)庫中的查詢語句進(jìn)行發(fā)布散庶。
-
Publish蕉堰,當(dāng)冒煙測試通過之后就可以點(diǎn)擊發(fā)布按鈕把接口發(fā)布上線了。每次發(fā)布 Dataway 都會(huì)在 interface_release 表中新增一條記錄悲龟。
發(fā)布后數(shù)據(jù)庫有記錄
Postman進(jìn)行接口測試:
Postman調(diào)用已發(fā)布接口
5.6 刪除/下線
已經(jīng)發(fā)布上線的接口只能執(zhí)行接口下線操作屋讶。已經(jīng)下線的接口或者正在編輯中的接口可以執(zhí)行刪除操作,刪除操作會(huì)物理刪除 interface_info 表中對應(yīng)的記錄须教。 但是刪除操作并不會(huì)刪除曾經(jīng)的發(fā)布?xì)v史丑婿,這就留給我們了一條可以找回被刪除的接口曾經(jīng)發(fā)布過的歷史記錄。只不過這一步只能進(jìn)入數(shù)據(jù)庫中自行搜索。
5.7 發(fā)布?xì)v史
每個(gè) Dataway 上的接口在發(fā)布時(shí)都會(huì) 在interface_release
表中生成一條記錄羹奉。發(fā)布?xì)v史看的就是這里的記錄秒旋。
在歷史記錄列表的右側(cè) icon,點(diǎn)擊可以恢復(fù)歷史記錄的內(nèi)容到編輯器中诀拭。
六迁筛、本文源碼
本文設(shè)計(jì)源代碼可以從我的Gitee倉庫dataway目錄下載。
相關(guān)代碼也可以從下面獲得耕挨。
pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.erbadagang.dataway</groupId>
<artifactId>dataway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dataway</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.0.RELEASE</spring-boot.version>
</properties>
<dependencies>
<!-- 引入hasor依賴 -->
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-spring</artifactId>
<version>4.1.8</version><!-- 查看最新版本:https://mvnrepository.com/artifact/net.hasor/hasor-spring -->
</dependency>
<dependency>
<groupId>net.hasor</groupId>
<artifactId>hasor-dataway</artifactId>
<version>4.1.8</version><!-- 查看最新版本:https://mvnrepository.com/artifact/net.hasor/hasor-dataway -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.19</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
spring.application.name=dataway
management.endpoints.jmx.exposure.include=*
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
# spring cloud access&secret config
# 可以訪問如下地址查看: https://usercenter.console.aliyun.com/#/manage/ak
alibaba.cloud.access-key=****
alibaba.cloud.secret-key=****
# 應(yīng)用服務(wù) WEB 訪問端口
server.port=8080
# Actuator Web 訪問端口
management.server.port=8081
# 啟用 Dataway 功能(默認(rèn)不啟用)
HASOR_DATAQL_DATAWAY=true
# 開啟 ui 管理功能(注意生產(chǎn)環(huán)境必須要設(shè)置為 false细卧,否則會(huì)造成嚴(yán)重的生產(chǎn)安全事故)
HASOR_DATAQL_DATAWAY_ADMIN=true
# (可選)API工作路徑
HASOR_DATAQL_DATAWAY_API_URL=/api/
# (可選)ui 的工作路徑,只有開啟 ui 管理功能后才有效
HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/
# db
spring.datasource.url=jdbc:mysql://101.133.227.13:3306/seata_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=IA8oDDk90e6V
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type:com.alibaba.druid.pool.DruidDataSource
# druid
spring.datasource.druid.initial-size=3
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10
spring.datasource.druid.max-wait=60000
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=1
DatawayApplication
package com.erbadagang.dataway;
import net.hasor.spring.boot.EnableHasor;
import net.hasor.spring.boot.EnableHasorWeb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @description Dataway集成在Springboot項(xiàng)目中筒占,通過UI方式配置接口贪庙。
* @ClassName: DatawayApplication
* @author: 郭秀志 jbcode@126.com
* @date: 2020/6/25 16:39
* @Copyright:
*/
@SpringBootApplication
@EnableHasor() // 在Spring 中啟用 Hasor
@EnableHasorWeb() // 將 hasor-web 配置到 Spring 環(huán)境中,Dataway 的 UI 是通過 hasor-web 提供服務(wù)翰苫。
public class DatawayApplication {
public static void main(String[] args) {
SpringApplication.run(DatawayApplication.class, args);
}
}