Абсолютно! Этот инструмент позволяет SpringBoot больше не нуждаться в Controller, Service, DAO, Mapper!

Spring Boot

Введение в Dataway

Dataway — это инструмент настройки интерфейса, основанный на возможности агрегации сервисов DataQL, который предоставляет инструмент настройки интерфейса для приложений, позволяя пользователям настраивать интерфейс, отвечающий их потребностям, без разработки какого-либо кода. Вся настройка интерфейса, тестирование, курение и публикация выполняются через интерфейс пользовательского интерфейса, предоставляемый Dataway. Пользовательский интерфейс будет предоставлен в виде пакета Jar, интегрирован в приложение и будет использовать один и тот же порт http с приложением.Приложению не нужно открывать новый порт управления для Dataway.

Преимущество этого встроенного режима интеграции заключается в том, что большинство старых проектов могут напрямую применять Dataway без вмешательства. Это повышает итеративную эффективность старых проектов и значительно снижает затраты на исследования и разработки корпоративных проектов.

Инструментарий Dataway предоставляет возможности настройки DataQL. Это изменение в модели НИОКР позволяет реализовывать значительное количество сценариев развития спроса только с конфигурацией. Это позволяет избежать ряда задач разработки от доступа к данным до внешних интерфейсов, таких как Mapper, BO, VO, DO, DAO, Service и Controller не нужны.

Dataway является членом экосистемы Hasor, поэтому первое, что нужно сделать при использовании Dataway in Spring, — это соединить две экосистемы. Мы интегрировали Hasor и Spring Boot по методу, рекомендованному в официальной документации. Вот исходный текст:woohoo.has или .net/Web/extends…

Шаг 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, конфигурация интерфейса может быть реализована. Найдите файл конфигурации application.properties нашего проекта Springboot.

# 是否启用 Dataway 功能(必选:默认false)
HASOR_DATAQL_DATAWAY=true

# 是否开启 Dataway 后台管理界面(必选:默认false)
HASOR_DATAQL_DATAWAY_ADMIN=true

# dataway  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_DATAWAY и HASOR_DATAQL_DATAWAY_ADMIN должны быть включены.По умолчанию Datawaty не включен.

Для работы Dataway требуются две таблицы данных, ниже приведен краткий оператор таблицы для этих двух таблиц данных. Следующий SQL можно найти в каталоге "META-INF/hasor-framework/mysql" в пакете jar зависимостей dataway. Оператор создания таблицы написан в синтаксисе 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`      mediumtext   NOT NULL                  COMMENT '查询脚本:xxxxxxx',
    `api_schema`      mediumtext       NULL                  COMMENT '接口的请求/响应数据结构',
    `api_sample`      mediumtext       NULL                  COMMENT '请求/响应/请求头样本数据',
    `api_create_time` datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `api_gmt_time`    datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    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 '状态: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 '原始查询脚本,仅当类型为SQL时不同',
    `pub_schema`      mediumtext       NULL                  COMMENT '接口的请求/响应数据结构',
    `pub_sample`      mediumtext       NULL                  COMMENT '请求/响应/请求头样本数据',
    `pub_release_time`datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '发布时间(下线不更新)',
    PRIMARY KEY (`pub_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Dataway API 发布历史。';

create index idx_interface_release on interface_release (pub_api_id);

Шаг 3. Настройте источник данных

Поскольку проект Spring Boot имеет свои собственные звуковые базы данных. На этот раз мы принимаем 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>

Затем добавьте конфигурацию источника данных

# 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

Если проект уже интегрирует собственный источник данных, третий шаг можно пропустить.

Шаг 4. Установите в качестве источника данных контейнер Hasor.

Spring Boot и Hasor — это два независимых контейнерных фреймворка.После интеграции нам нужно установить источник данных в Spring на Hasor, чтобы использовать возможности Dataway.

Сначала создайте модуль Hasor и передайте его руководству Spring. Затем введите источник данных через Spring.

@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));
    }
}

При запуске Hasor вызывается метод loadModule, и здесь DataSource устанавливается на Hasor.

Шаг 5: Включите Hasor в SprintBoot

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

Этот шаг очень прост, просто добавьте две аннотации к загрузочному классу Spring.

Шаг 6: Запустите приложение

Приложение увидит приветственное сообщение Hasor Boot во время запуска.

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

Вы также можете увидеть журналы, подобные приведенным ниже, в следующих журналах.

2020-04-14 13:52:59.696 [main] INFO  n.h.core.context.TemplateAppContext - loadModule class net.hasor.dataway.config.DatawayModule
2020-04-14 13:52:59.697 [main] INFO  n.hasor.dataway.config.DatawayModule - dataway api workAt /api/
2020-04-14 13:52:59.697 [main] INFO  n.h.c.e.AbstractEnvironment - var -> HASOR_DATAQL_DATAWAY_API_URL = /api/.
2020-04-14 13:52:59.704 [main] INFO  n.hasor.dataway.config.DatawayModule - dataway admin workAt /interface-ui/
2020-04-14 13:52:59.716 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[901d38f22faa419a8593bb349905ed0e] -> bindType ‘class net.hasor.dataway.web.ApiDetailController’ mappingTo: ‘[/interface-ui/api/api-detail]’.
2020-04-14 13:52:59.716 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[c6eb9f3b3d4c4c8d8a4f807435538172] -> bindType ‘class net.hasor.dataway.web.ApiHistoryListController’ mappingTo: ‘[/interface-ui/api/api-history]’.
2020-04-14 13:52:59.717 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[eb841dc72ad54023957233ef602c4327] -> bindType ‘class net.hasor.dataway.web.ApiInfoController’ mappingTo: ‘[/interface-ui/api/api-info]’.
2020-04-14 13:52:59.717 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[96aebb46265245459ae21d558e530921] -> bindType ‘class net.hasor.dataway.web.ApiListController’ mappingTo: ‘[/interface-ui/api/api-list]’.
2020-04-14 13:52:59.718 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[7467c07f160244df8f228321f6262d3d] -> bindType ‘class net.hasor.dataway.web.ApiHistoryGetController’ mappingTo: ‘[/interface-ui/api/get-history]’.
2020-04-14 13:52:59.719 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[97d8da5363c741ba99d87c073a344412] -> bindType ‘class net.hasor.dataway.web.DisableController’ mappingTo: ‘[/interface-ui/api/disable]’.
2020-04-14 13:52:59.720 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[8ddc3316ef2642dfa4395ca8ac0fff04] -> bindType ‘class net.hasor.dataway.web.SmokeController’ mappingTo: ‘[/interface-ui/api/smoke]’.
2020-04-14 13:52:59.720 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[cc06c5fb343b471aacedc58fb2fe7bf8] -> bindType ‘class net.hasor.dataway.web.SaveApiController’ mappingTo: ‘[/interface-ui/api/save-api]’.
2020-04-14 13:52:59.720 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[7915b2b1f89a4e73891edab0264c9bd4] -> bindType ‘class net.hasor.dataway.web.PublishController’ mappingTo: ‘[/interface-ui/api/publish]’.
2020-04-14 13:52:59.721 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[0cfa34586455414591bdc389bff23ccb] -> bindType ‘class net.hasor.dataway.web.PerformController’ mappingTo: ‘[/interface-ui/api/perform]’.
2020-04-14 13:52:59.721 [main] INFO  net.hasor.core.binder.ApiBinderWrap - mapingTo[37fe4af3e2994acb8deb72d21f02217c] -> bindType ‘class net.hasor.dataway.web.DeleteController’ mappingTo: ‘[/interface-ui/api/delete]’.

Когда вы видите «Dataway API Workat / API /», когда администратор Dataway Workat / интерфейс / интерфейс / информация, вы можете определить конфигурацию данных, в силе.

Шаг 7. Посетите страницу управления интерфейсом, чтобы настроить интерфейс.

В браузере введите "http://127.0.0.1:8080/интерфейс-UI/”Вы можете увидеть долгожданный интерфейс.

image

Шаг 8: Создайте новый интерфейс

Dataway предоставляет 2 языковых режима: мы можем использовать мощный язык запросов DataQL или напрямую использовать язык SQL (в Dataway язык SQL также будет преобразован в DataQL для выполнения).

image

Сначала мы пытаемся выполнить запрос SELECT в режиме SQL, вы можете увидеть результаты этого запроса SQL.

image

Так же, как мы используем DataQL способ надо писать:

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

Где var query = @@sql()<% ... %> используется для определения блока внешнего кода SQL и сохранения этого определения в имени переменной запроса. Середина <% %> — это оператор SQL.

Наконец, вызовите этот блок кода в DataQL и верните результат запроса.

После написания интерфейса его можно сохранить и опубликовать.Для удобства тестирования я выбираю метод GET.

image

После публикации интерфейса напрямую запрашиваем:http://127.0.0.1:8080/api/demos можно увидеть долгожданное возвращаемое значение интерфейса.

image

окончательное резюме

После вышеуказанных шагов мы представили, как использовать Dataway для простой настройки интерфейса на основе проекта Spring Boot. Способ Dataway действительно освежает. Интерфейс можно настроить так просто, не разрабатывая ни одной строки кода или выполняя какое-либо сопоставление и привязку объектов сопоставления.