¡Que SpringBoot no necesite Controller, Service, DAO, Mapper, mierda! ¡Esta herramienta es perfecta!

Introducción a la vía de datos

Dataway es una herramienta de configuración de interfaz para aplicaciones basada en la capacidad de agregación de servicios de DataQL. Permite a los usuarios configurar una interfaz que cumpla con los requisitos sin desarrollar ningún código. Toda la interfaz está configurada, probada, fumada, publicada. La ventanilla única se completa a través de la interfaz de usuario proporcionada por Dataway. La interfaz de usuario se proporcionará como un paquete Jar y se integrará en la aplicación y compartirá el mismo puerto http con la aplicación. La aplicación no necesita abrir un nuevo puerto de administración para Dataway por separado.

La ventaja de este modo de integración incorporado es que permite que la mayoría de los proyectos antiguos apliquen directamente Dataway sin intrusiones. A su vez, mejora la eficiencia de iteración de los proyectos antiguos y reduce en gran medida los costos de I+D de los proyectos empresariales.

La herramienta Dataway proporciona capacidades de configuración de DataQL. Este cambio en el modelo de I+D ha permitido que algunos escenarios de desarrollo de requisitos se entreguen solo a través de la configuración. Esto evita una serie de tareas de desarrollo desde el acceso a los datos hasta la interfaz frontal, por ejemplo: Mapper, BO, VO, DO, DAO, Service, Controller ya no son necesarios.

Dataway es miembro del ecosistema Hasor, por lo que lo primero que debe hacer al usar Dataway en Spring es conectar los dos ecosistemas. De acuerdo con el método recomendado en el documento oficial, integramos Hasor y Spring Boot. Aquí está el texto original: https://www.hasor.net/web/extends/spring/for_boot.html

Paso 1: Introducir dependencias relacionadas

 
 

<dependencia>
    <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 es responsable de la integración entre Spring y el marco Hasor. hasor-dataway funciona en Hasor, y podemos usar dataway con hasor-spring.

Paso 2: Configurar Dataway e inicializar la tabla de datos

dataway proporcionará una interfaz para que configuremos la interfaz, que es similar a Swagger, siempre que el paquete jar esté integrado, la configuración de la interfaz se puede realizar. Encuentre el archivo de configuración  application.properties de nuestro proyecto springboot

 
 

# Si habilitar la función Dataway (obligatorio: predeterminado falso)
HASOR_DATAQL_DATAWAY=true

# Si habilitar la interfaz de administración de fondo de Dataway (obligatorio: predeterminado falso)
HASOR_DATAQL_DATAWAY_ADMIN=true

# ruta de trabajo de la API dataway (opcional, predeterminado: /api/)
HASOR_DATAQL_DATAWAY_API_URL= / api/

# ruta de trabajo dataway-ui (opcional, predeterminado: /interface-ui/)
HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/

# Configuración del dialecto del ejecutor SQL (opción opcional, configuración recomendada)
HASOR_DATAQL_FX_PAGE_DIALECT=mysql

Dataway implica un total de 5 elementos de configuración configurables, pero no se requieren todas las configuraciones.

Entre ellos,  HASOR_DATAQL_DATAWAY y HASOR_DATAQL_DATAWAY_ADMIN  deben estar habilitados. Por defecto, Datawaty no está habilitado.

Dataway necesita dos tablas de datos para funcionar, y la siguiente es una breve declaración de las dos tablas de datos. El siguiente SQL se puede encontrar en el directorio "META-INF/hasor-framework/mysql" en el paquete jar dependiente de la vía de datos. La declaración de creación de la tabla está escrita en sintaxis mysql.

 
 

CREATE TABLE `interface_info` (
    `api_id` int(11) NOT NULL AUTO_INCREMENT COMENTARIO 'ID',
    `api_method` varchar(12) NOT NULL COMENTARIO 'HttpMethod: GET, PUT, POST',
    `api_path` varchar(512) NOT NULL COMMENT 'Ruta de intercepción',
    `api_status` int(2) NOT NULL COMMENT 'Estado: 0 borrador, 1 publicado, 2 con cambios, 3 deshabilitados',
    `api_comment` varchar(255) NULL COMENTARIO 'Comentario',
    `api_type` varchar (24) NOT NULL COMMENT 'Tipo de script: SQL, DataQL',
    `api_script` mediumtext NOT NULL COMMENT 'Query script: xxxxxxx',
    `api_schema` mediumtext NULL COMMENT 'Estructura de datos de solicitud/respuesta de interfaz',
    `api_sample` mediumtext NULL COMMENT 'request/response/request header sample data',
    `api_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'creation time',
    `api_gmt_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'modification time',
    PRIMARY KEY (`api_id`)
) ENGI NE =InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='API in Dataway';

CREATE TABLE `interface_release` (
    `pub_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Publish ID',
    `pub_api_id` int(11) NOT NULL COMENT 'API ID',
    'pub_method' varchar(12) NO ES UN COMENTARIO NULO 'HttpMethod: GET, PUT, POST',
    `pub_path` varchar(512) NOT NULL COMMENT 'ruta de intercepción',
    PRIMARY KEY (`pub_id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COMMENT='Historial de publicación de la API de Dataway. ';









crear índice idx_interface_release en interface_release (pub_api_id);

Paso 3: Configure la fuente de datos

Como proyecto Spring Boot, tiene su propio soporte completo de herramientas de base de datos. Usamos druid + mysql + spring-boot-starter-jdbc esta vez.

Primero introduce la dependencia

 
 

<dependencia>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.30</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druida</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>

Luego aumente la configuración de la fuente de datos.

 
 

# 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=administrador
spring.datasource.druid.stat-view-servlet.login-password=administrador
spring.datasource.druid .filter.stat.log-slow-sql=verdadero
spring.datasource.druid.filter.stat.slow-sql-millis=1

Si el proyecto ha integrado su propia fuente de datos, entonces se puede ignorar el tercer paso.

Paso 4: establezca la fuente de datos en el contenedor Hasor

Spring Boot y Hasor son dos marcos de contenedores independientes.Después de la integración, debemos configurar la fuente de datos en Spring en Hasor para usar la capacidad de Dataway.

Primero cree un módulo Hasor y entrégueselo a Spring para su administración. Luego inyecte la fuente de datos a través de Spring.

 
 

@DimModule
@Component
clase pública ExampleModule implementa 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));     } }








Cuando se inicie Hasor, llamará al método loadModule y luego establecerá DataSource en Hasor.

Paso 5: habilite Hasor en SprintBoot

 
 

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



Este paso es muy simple, solo agregue dos anotaciones a la clase de inicio de Spring.

Paso 6: Inicie la aplicación

La aplicación verá el mensaje de bienvenida de Hasor Boot durante el proceso de inicio

 
 

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

También puede ver registros similares a los siguientes en los siguientes registros.

 
 

2020-04-14 13:52:59.696 [principal] INFORMACIÓN nhcore.context.TemplateAppContext - clase loadModule net.hasor.dataway.config.DatawayModule
2020-04-14 13:52:59.697 [principal] INFORMACIÓN n.hasor.dataway .config.DatawayModule - dataway 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 [principal] INFORMACIÓN n.hasor.dataway.config.DatawayModule - trabajo de administrador de vía de datos en /interface-ui/
2020-04-14 13:52:59.716 [principal] INFORMACIÓN 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 [principal] INFO net.hasor.core.binder.ApiBinderWrap - mapingTo[c6eb9f3b3d4c4c8d8a4f807435538172] -> bindType 'class net.hasor.dataway.web.ApiHistoryListController' mappingTo: '[/interface- ui/api/api-historia]'.
2020-04-14 13:52:59.717 [principal] 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 [principal] INFO net.hasor.core.binder.ApiBinderWrap - mapingTo[96aebb46265245459ae21d558e530921] -> bindType 'class net.hasor.dataway.web.ApiListController' mappingTo: '[/interface- ui/api/lista-api]'.
2020-04-14 13:52:59.718 [principal] 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 [principal] INFO net.hasor.core.binder.ApiBinderWrap - mapingTo[97d8da5363c741ba99d87c073a344412] -> bindType 'class net.hasor.dataway.web.DisableController' mappingTo: '[/interface- ui/api/deshabilitar]'.
2020-04-14 13:52:59.720 [principal] INFO net.hasor.core.binder.ApiBinderWrap - mapingTo[8ddc3316ef2642dfa4395ca8ac0fff04] -> bindType 'class net.hasor.dataway.web.SmokeController' mappingTo: '[/interface- ui/api/humo]'.
2020-04-14 13:52:59.720 [principal] 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 [principal] INFO net.hasor.core.binder.ApiBinderWrap - mapingTo[7915b2b1f89a4e73891edab0264c9bd4] -> bindType 'class net.hasor.dataway.web.PublishController' mappingTo: '[/interface- ui/api/publicar]'.
2020-04-14 13:52:59.721 [principal] 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 [principal] INFO net.hasor.core.binder.ApiBinderWrap - mapingTo[37fe4af3e2994acb8deb72d21f02217c] -> bindType 'class net.hasor.dataway.web.DeleteController' mappingTo: '[/interface- ui/api/eliminar]'.

Cuando vea “dataway api workAt  /api/  ” y la información de dataway admin workAt  /interface-ui/  , puede estar seguro de que la configuración de Dataway tuvo efecto.

Paso 7: acceda a la página de administración de la interfaz para configurar la interfaz

Ingrese "http://127.0.0.1:8080/interface-ui/" en el navegador para ver la interfaz tan esperada.

imagen

Paso 8: Crear una nueva interfaz

Dataway proporciona 2 modos de idioma, podemos usar el poderoso lenguaje de consulta DataQL o usar directamente el lenguaje SQL (en Dataway, el lenguaje SQL también se convertirá en DataQL para su ejecución).

imagen

Primero, intentamos ejecutar una consulta de selección en modo SQL y podemos ver inmediatamente el resultado de la consulta de este SQL.

imagen

De la misma manera, la forma en que usamos DataQL debe escribirse así:

 
 

var consulta = @@sql()<%
    seleccionar * de interface_info
%>
devolver consulta()

Entre ellos, var query =  @@sql()<% ... %>  se usa para definir el bloque de código externo de SQL y almacenar esta definición en el nombre de la variable de consulta. <% %> es la declaración SQL en el medio.

Finalmente, llame a este bloque de código en DataQL y devuelva el resultado de la consulta.

Una vez que se escribe la interfaz, se puede guardar y liberar Para la comodidad de las pruebas, elijo el método GET.

imagen

Después de publicar la interfaz, solicitamos directamente: http://127.0.0.1:8080/api/demos, y vemos el valor de retorno largamente esperado de la interfaz.

imagen

resumen final

Después de los pasos anteriores, presentamos cómo usar Dataway para configurar simplemente la interfaz basada en el proyecto Spring Boot. El enfoque de Dataway es realmente refrescante. Una interfaz se puede configurar tan fácilmente sin desarrollar una sola línea de código y sin hacer ningún enlace de mapeo de entidades de mapeo.

Finalmente, pon algunos enlaces útiles:

  • Manual oficial de Dataway: https://www.hasor.net/web/dataway/about.html

  • Dirección del proyecto de Dataway en OSC, bienvenido a marcar:

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

  • Dirección del manual de DataQL: https://www.hasor.net/web/dataql/what_is_dataql.html

  • Página de inicio del proyecto Hasor: https://www.hasor.net/web/index.html

Supongo que te gusta

Origin blog.csdn.net/Blue92120/article/details/132035282
Recomendado
Clasificación