SpringBoot にはコントローラー、サービス、DAO、マッパーが不要になります。このツールは完璧です!

データウェイの概要

Dataway は、DataQL サービス集約機能に基づいたアプリケーション用のインターフェイス構成ツールです。これにより、ユーザーはコードを開発することなく、要件を満たすインターフェイスを構成できます。インターフェイス全体が設定、テスト、スモーク、公開されます。Dataway が提供する UI インターフェイスを通じてワンストップ ショッピングが完了します。UI は Jar パッケージとして提供され、アプリケーションに統合され、アプリケーションと同じ http ポートを共有します。アプリケーションは Dataway 用に新しい管理ポートを個別に開く必要はありません。

この組み込み統合モードの利点は、ほとんどの古いプロジェクトが侵入することなく Dataway を直接適用できることです。その結果、古いプロジェクトの反復効率が向上し、企業プロジェクトの研究開発コストが大幅に削減されます。

Dataway ツールは DataQL 構成機能を提供します。研究開発モデルにおけるこの変更により、かなりの数の要件開発シナリオが構成のみで提供できるようになりました。これにより、データ アクセスからフロントエンド インターフェイスまでの一連の開発タスクが回避されます。たとえば、Mapper、BO、VO、DO、DAO、Service、Controller はすべて不要になります。

Dataway は Hasor エコシステムのメンバーであるため、Spring で Dataway を使用するときに最初に行うことは、2 つのエコシステムを接続することです。公式ドキュメントで推奨されている方法に従い、HasorとSpring Bootを統合します。元のテキストは次のとおりです: https://www.hasor.net/web/extends/spring/for_boot.html

ステップ 1: 関連する依存関係を導入する

 
 

<dependency>
    <groupId>net.hasor</groupId>
    <artifactId>hasor-spring</artifactId>
    <version>4.1.3</version>
</dependency>
<dependency>
    <groupId>net.hasor</groupId>
    <artifactId>hasor-dataway</artifactId>
    <version>4.1.3-fix20200414</version><!-- 4.1.3 包存在UI资源缺失问题 -->
</dependency>

hasor-spring は、Spring と Hasor フレームワーク間の統合を担当します。hasor-dataway は Hasor 上で動作し、hasor-spring で dataway を使用できます。

ステップ 2: Dataway を構成し、データ テーブルを初期化する

dataway はインターフェースを設定するためのインターフェースを提供します。これは Swagger と同様で、jar パッケージが統合されている限り、インターフェース設定を実現できます。Springboot プロジェクトの構成ファイル application.propertiesを見つけます。

 
 

# Dataway 機能を有効にするかどうか (必須: デフォルトは false)
HASOR_DATAQL_DATAWAY=true

# Dataway バックグラウンド管理インターフェースを有効にするかどうか (必須: デフォルトは false)
HASOR_DATAQL_DATAWAY_ADMIN=true

# データウェイ API の作業パス (オプション、デフォルト: /api/)
HASOR_DATAQL_DATAWAY_API_URL= / api/

# dataway-ui 作業パス (オプション、デフォルト: /interface-ui/)
HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/

# SQL エグゼキューター方言設定 (オプション、推奨設定)
HASOR_DATAQL_FX_PAGE_DIALECT=mysql

Dataway には合計 5 つの構成可能な構成項目が含まれますが、すべての構成が必要なわけではありません。

このうち、  HASOR_DATAQL_DATAWAYHASOR_DATAQL_DATAWAY_ADMIN は 有効にする必要がありますが、デフォルトでは Datawaty は有効になっていません。

Dataway が動作するには 2 つのデータ テーブルが必要です。以下に 2 つのデータ テーブルの簡単な説明を示します。以下の SQL は、dataway の依存 jar パッケージ内の「META-INF/hasor-framework/mysql」ディレクトリにあり、テーブル作成ステートメントは 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 'ステータス: 0 ドラフト、1 公開済み、2 変更あり、3 無効'、
    `api_comment` varchar(255) NULL COMMENT 'コメント'、
    `api_type` varchar (24) NOT NULL COMMENT 'スクリプトの種類: SQL、DataQL'、
    `api_script` メディアテキスト NOT NULL COMMENT 'クエリ スクリプト: xxxxxxx'、
    `api_schema` mediatext NULL COMMENT 'インターフェース要求/応答データ構造',
    `api_sample` mediatext NULL COMMENT 'リクエスト/レスポンス/リクエストヘッダサンプルデータ',
    `api_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '作成時刻',
    `api_gmt_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '変更時刻',
    PRIMARY KEY (`api_id`)
) ENGI NE =InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway の API';

CREATE TABLE `interface_release` (
    `pub_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'パブリッシュ ID',
    `pub_api_id` int(11) NOT NULL COMMENT 'API ID'、
    'pub_method' varchar(12) NOT NULL コメント 'HttpMethod: GET、PUT、POST'、
    `pub_path` varchar(512) NOT NULL コメント 'インターセプトパス',
    PRIMARY KEY (`pub_id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 公開履歴。';









Interface_release (pub_api_id) にインデックス idx_interface_release を作成します。

ステップ 3: データソースを構成する

Spring Boot プロジェクトとして、独自の完全なデータベース ツール サポートを備えています。今回は druid + mysql + spring-boot-starter-jdbc を使用します。

まず依存関係を導入します

 
 

<依存関係>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <バージョン>5.1.30</version>
</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>

次に、データ ソースの構成を増やします。

 
 

# 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

プロジェクトが独自のデータ ソースを統合している場合、3 番目の手順は無視できます。

ステップ 4: データ ソースを Hasor コンテナに設定する

Spring Boot と Hasor は 2 つの独立したコンテナ フレームワークであり、統合後、Dataway 機能を使用するために Spring のデータ ソースを Hasor に設定する必要があります。

まず Hasor モジュールを作成し、管理のために Spring に渡します。次に、Spring を通じてデータ ソースを挿入します。

 
 

@DimModule
@Component
public class ExampleModuleimplemented SpringModule {     @Autowired     private DataSource dataSource = null;     @Override     public voidloadModule(ApiBinder apiBinder) throws Throwable {         // .DataSource フォーム Spring boot into Hasor         apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));     } }








Hasor が起動すると、loadModule メソッドが呼び出され、DataSource が Hasor に設定されます。

ステップ 5: SprintBoot で Hasor を有効にする

 
 

@EnableHasor()
@EnableHasorWeb()
@SpringBootApplication(scanBasePackages = { "net.example.hasor" })
public class ExampleApplication {     public static void main(String[] args) {         SpringApplication.run(ExampleApplication.class, args);     } }



この手順は非常に簡単で、Spring スタートアップ クラスに 2 つのアノテーションを追加するだけです。

ステップ 6: アプリケーションを起動する

アプリケーションには、起動プロセス中に Hasor Boot のウェルカム メッセージが表示されます。

 
 

 _ _ ____ _
| | | | | _ \ | |
| |__| | ________ | |_) | ____ | |_
| __ |/ _` / __|/ _ \| '__| | _ < / _ \ / _ \| __|
| | | | (_| \__ \ (_) | | | |_) | (_) | (_) | |_
|_| |_|\__,_|___/\___/|_| |____/ \___/ \___/ \__|

次のログにも、次のようなログが表示されます。

 
 

2020-04-14 13:52:59.696 [メイン] 情報 nhcore.context.TemplateAppContext -loadModule クラス net.hasor.dataway.config.DatawayModule
2020-04-14 13:52:59.697 [メイン] 情報 n.hasor.dataway .config.DatawayModule - データウェイ API workAt /api/
2020-04-14 13:52:59.697 [main] INFO nhceAbstractEnvironment - var -> HASOR_DATAQL_DATAWAY_API_URL = /api/。
2020-04-14 13:52:59.704 [メイン] 情報 n.hasor.dataway.config.DatawayModule - dataway admin workAt /interface-ui/
2020-04-14 13:52:59.716 [メイン] 情報 net.hasor。 core.binder.ApiBinderWrap - マッピングTo[901d38f22faa419a859​​3bb349905ed0e] ->bindType 'class net.hasor.dataway.web.ApiDetailController' マッピングTo: '[/interface-ui/api/api-detail]'。
2020-04-14 13:52:59.716 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[c6eb9f3b3d4c4c8d8a4f807435538​​172] -> bindingType 'class net.hasor.dataway.web.ApiHistoryListController' MappingTo: '[/interface- ui/api/api-history]'。
2020-04-14 13:52:59.717 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[eb841dc72ad54023957233ef602c4327] -> bindingType 'class net.hasor.dataway.web.ApiInfoController' マッピングTo: '[/interface- ui/api/api-info]'。
2020-04-14 13:52:59.717 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[96aebb46265245459ae21d558e530921] -> bindingType 'class net.hasor.dataway.web.ApiListController' MappingTo: '[/interface- ui/api/api-list]'。
2020-04-14 13:52:59.718 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[7467c07f160244df8f228321f6262d3d] -> bindingType 'class net.hasor.dataway.web.ApiHistoryGetController' マッピングTo: '[/interface- ui/api/get-history]'。
2020-04-14 13:52:59.719 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[97d8da5363c741ba99d87c073a344412] -> bindingType 'class net.hasor.dataway.web.DisableController' MappingTo: '[/interface- ui/api/無効にする]'。
2020-04-14 13:52:59.720 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[8ddc3316ef2642dfa4395ca8ac0fff04] -> bindingType 'class net.hasor.dataway.web.SmokeController' マッピングTo: '[/interface- ui/api/smoke]'。
2020-04-14 13:52:59.720 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[cc06c5fb343b471aacedc58fb2fe7bf8] -> bindingType 'class net.hasor.dataway.web.SaveApiController' マッピングTo: '[/interface- ui/api/save-api]'。
2020-04-14 13:52:59.720 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[7915b2b1f89a4e73891edab0264c9bd4] -> bindingType 'class net.hasor.dataway.web.PublishController' MappingTo: '[/interface- ui/api/パブリッシュ]'。
2020-04-14 13:52:59.721 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[0cfa34586455414591bdc389bff23ccb] -> bindingType 'class net.hasor.dataway.web.PerformController' MappingTo: '[/interface- ui/api/perform]'。
2020-04-14 13:52:59.721 [メイン] 情報 net.hasor.core.binder.ApiBinderWrap - mapingTo[37fe4af3e2994acb8deb72d21f02217c] -> bindingType 'class net.hasor.dataway.web.DeleteController' MappingTo: '[/interface- ui/api/削除]'。

「dataway api workAt  /api/  」および dataway admin workAt  /interface-ui/ 情報が表示されたら、Dataway 構成が有効になっていることを確認できます。

ステップ 7: インターフェース管理ページにアクセスしてインターフェースを構成する

ブラウザに「http://127.0.0.1:8080/interface-ui/」と入力すると、待望のインターフェイスが表示されます。

写真

ステップ 8: 新しいインターフェースを作成する

Dataway には 2 つの言語モードがあり、強力な DataQL クエリ言語を使用することも、SQL 言語を直接使用することもできます (Dataway では、SQL 言語も実行のために DataQL に変換されます)。

写真

まず、SQL モードで選択クエリを実行してみます。この SQL のクエリ結果をすぐに確認できます。

写真

同様に、DataQL の使用方法は次のように記述する必要があります。

 
 

var query = @@sql()<%
    select * frominterface_info
%>
return query()

このうち、var query =  @@sql()<% ... %>は、  SQLの外部コードブロックを定義し、この定義をクエリ変数名に格納するために使用されます。<% %> は中間の SQL ステートメントです。

最後に、DataQL でこのコード ブロックを呼び出し、クエリ結果を返します。

インターフェイスを作成したら、保存してリリースできますが、テストの便宜のため、GET メソッドを選択します。

写真

インターフェイスが公開された後、http://127.0.0.1:8080/api/demos を直接リクエストすると、待望のインターフェイスの戻り値が表示されます。

写真

最終的なまとめ

上記の手順の後、Dataway を使用して Spring Boot プロジェクトに基づいてインターフェイスを簡単に構成する方法を紹介しました。Dataway メソッドは非常に斬新で、コードを 1 行も開発することなく、またマッピング エンティティのマッピング バインディングを行うことなく、インターフェイスを簡単に構成できます。

最後に、役立つリンクをいくつか貼り付けます。

  • Dataway公式マニュアル:https://www.hasor.net/web/dataway/about.html

  • OSC 上の Dataway プロジェクト アドレス。ブックマークへようこそ:

    • https://www.oschina.net/p/dataway

  • DataQL マニュアルのアドレス: https://www.hasor.net/web/dataql/what_is_dataql.html

  • Hasor プロジェクトのホームページ: https://www.hasor.net/web/index.html

おすすめ

転載: blog.csdn.net/Blue92120/article/details/132035282