讓SpringBoot不再有Controller埂陆、Service苛白、DAO、Mapper

序曲

  1. 今天是五月初五端午節(jié)焚虱,盡享傳統(tǒng)飲食:早上煮雞蛋购裙、面條荷包蛋、粽子鹃栽;中午餃子躏率。記錄一下黑腿配白腳(餃)。
    黑腿配白腳(餃)
  2. 另外民鼓,啟用我的頂級(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ī)制

工作機(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)

接口狀態(tài)關(guā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)入新增接口頁面贴彼。


新增一個(gè)接口

5.2 表內(nèi)數(shù)據(jù)
表數(shù)據(jù)內(nèi)容

5.3 執(zhí)行

在任意的編輯器界面中(新增模式 or 編輯模式),都可以直接在編輯區(qū)編寫 SQL 查詢并通過右上角的 Execute 按鈕執(zhí)行埃儿。

執(zhí)行接口返回?cái)?shù)據(jù)

  • 另外一個(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è)過程幼东,具體如下:

  1. Execute臂容,調(diào)試當(dāng)前編輯器中的 DataQL 查詢。
  2. Smoke Test根蟹,冒煙測試脓杉。和 Execute 不同,Smoke 同樣是執(zhí)行 DataQL 查詢并要求查詢正常執(zhí)行完畢简逮。 但是區(qū)別 Execute 的是: Smoke 不會(huì)使用本地編輯器中的語句球散,而是到數(shù)據(jù)庫中獲取對應(yīng)的查詢語句。 因?yàn)榻涌诘陌l(fā)布也是將數(shù)據(jù)庫中的查詢語句進(jìn)行發(fā)布散庶。
  3. 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史看的就是這里的記錄秒旋。

發(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);
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末止邮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奏窑,更是在濱河造成了極大的恐慌导披,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埃唯,死亡現(xiàn)場離奇詭異撩匕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)墨叛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門止毕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漠趁,你說我怎么就攤上這事扁凛。” “怎么了棚潦?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長膝昆。 經(jīng)常有香客問我丸边,道長,這世上最難降的妖魔是什么荚孵? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任妹窖,我火速辦了婚禮,結(jié)果婚禮上收叶,老公的妹妹穿的比我還像新娘骄呼。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布蜓萄。 她就那樣靜靜地躺著隅茎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫉沽。 梳的紋絲不亂的頭發(fā)上辟犀,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音绸硕,去河邊找鬼堂竟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛玻佩,可吹牛的內(nèi)容都是我干的出嘹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咬崔,長吁一口氣:“原來是場噩夢啊……” “哼税稼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起刁赦,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤娶聘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后甚脉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丸升,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年牺氨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狡耻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猴凹,死狀恐怖夷狰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情郊霎,我是刑警寧澤沼头,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站书劝,受9級(jí)特大地震影響进倍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜购对,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一猾昆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骡苞,春花似錦垂蜗、人聲如沸楷扬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烘苹。三九已至,卻和暖如春蝇刀,著一層夾襖步出監(jiān)牢的瞬間螟加,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工吞琐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捆探,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓站粟,卻偏偏與公主長得像黍图,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子奴烙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容