美文网首页
Dataway整合Spring Boot

Dataway整合Spring Boot

作者: Liuzhoulin | 来源:发表于2020-08-08 11:54 被阅读0次

    一、创建spring boot项目工程

    二、添加dataway需要引用的两种依赖hasor-spring、hasor-dataway,hasor-spring是提供spring和dataway需要的环境

        <dependency>

             <groupId>net.hasor</groupId>

             <artifactId>hasor-spring</artifactId>

             <version>4.1.13</version>

         </dependency>

        <dependency>

             <groupId>net.hasor</groupId>

             <artifactId>hasor-dataway</artifactId>

              <version>4.1.13</version>

        </dependency>

    三、在对应的application.properties或者application.yml中添加如下参数

        1)  dataway参数如下,前两种必选,默认false关闭状态

        # 是否启用 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

        2)配置数据库参数如下,并在hasor-dataway-4.1.13.jar > META-INF > hasor-framework  > mysql(因为本文使用的是mysql,如果你用的不是mysql也可以在同路径中查找interface_info.sql、interface_release.sql两个sql建表语句,目前4.1.13支持四种数据库(mysql、oracle、postgresql、sqlserver2012))

        # db

        spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xx

        spring.datasource.username=xxxx

        spring.datasource.password=xxxx

        spring.datasource.driver-class-name=com.mysql.jdbc.Driver

        spring.datasource.type:com.alibaba.druid.pool.DruidDataSource

        #interface_info.sql

        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_option`      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 unique index idx_interface_info on interface_info (api_method, api_path);

        #interface_release.sql

        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_option`      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) 配置druid

        # 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相关依赖如下所示

        <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>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

           <groupId>com.alibaba</groupId>

            <artifactId>druid-spring-boot-starter</artifactId>

            <version>1.1.10</version>

        </dependency>

        注解:这里需要额外引入以下依赖防止启动报错找不到

        <parent>

           <groupId>org.springframework.boot</groupId>

          <artifactId>spring-boot-starter-parent</artifactId>

           <version>2.0.3.RELEASE</version>

          </parent>

        五、编写ExampleModule类继承SpringModule,并在创建项目的启动类上添加@EnableHasor、@EnableHasorWeb两注解来启用 Hasor和Hasor Web,前者在bean上标记了 @DimModule 注解并且实现了 Module 接口,那么它们会被作为 Hasor 的初始化 Module;后者配置 了Hasor 的全局拦截器和监听器。

        @DimModule

        @Component

        public class ExampleModule implements SpringModule{

            @Autowired

            private DataSource dataSource = null;

            @Override

            public void loadModule(ApiBinder apiBinder) throws Throwable {

            apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource));

            }

        }

    六、启动项目,看到如下日志,项目则配置成功,可直接本地访问http://localhost:8080/interface-ui/#/

    2020-08-03 14:50:32.896 INFO 79548 --- [ost-startStop-1] net.hasor.dataway.config.DatawayModule : dataway api workAt /api/

    2020-08-03 14:50:32.896  INFO 79548 --- [ost-startStop-1] n.h.c.environment.AbstractEnvironment    : var -> HASOR_DATAQL_DATAWAY_API_URL = /api/.

    2020-08-03 14:50:32.908  INFO 79548 --- [ost-startStop-1] net.hasor.dataway.config.DatawayModule  : dataway self isolation ->net.hasor.dataway.config.DatawayModule

    2020-08-03 14:50:32.912  INFO 79548 --- [ost-startStop-1] net.hasor.dataway.config.DatawayModule  : dataway admin workAt /interface-ui/

    相关文章

      网友评论

          本文标题:Dataway整合Spring Boot

          本文链接:https://www.haomeiwen.com/subject/ubpkrktx.html