一嗅义、創(chuàng)建spring?boot項(xiàng)目工程
二帐我、添加dataway需要引用的兩種依賴hasor-spring、hasor-dataway,hasor-spring是提供spring和dataway需要的環(huán)境
? ? <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>
三胰蝠、在對(duì)應(yīng)的application.properties或者application.yml中添加如下參數(shù)
? ? 1)? dataway參數(shù)如下,前兩種必選震蒋,默認(rèn)false關(guān)閉狀態(tài)
? ? # 是否啟用 Dataway 功能(必選:默認(rèn)false)
????HASOR_DATAQL_DATAWAY=true
????# 是否開啟 Dataway 后臺(tái)管理界面(必選:默認(rèn)false)
????HASOR_DATAQL_DATAWAY_ADMIN=true
????# dataway? API工作路徑(可選茸塞,默認(rèn):/api/)
????HASOR_DATAQL_DATAWAY_API_URL=/api/
????# dataway-ui 的工作路徑(可選,默認(rèn):/interface-ui/)
????HASOR_DATAQL_DATAWAY_UI_URL=/interface-ui/
????# SQL執(zhí)行器方言設(shè)置(可選查剖,建議設(shè)置)
????HASOR_DATAQL_FX_PAGE_DIALECT=mysql
????2)配置數(shù)據(jù)庫參數(shù)如下,并在hasor-dataway-4.1.13.jar > META-INF > hasor-framework? > mysql(因?yàn)楸疚氖褂玫氖莔ysql钾虐,如果你用的不是mysql也可以在同路徑中查找interface_info.sql、interface_release.sql兩個(gè)sql建表語句笋庄,目前4.1.13支持四種數(shù)據(jù)庫(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 '狀態(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 '接口的請(qǐng)求/響應(yīng)數(shù)據(jù)結(jié)構(gòu)',
? ?? ???`api_sample`? ? ? mediumtext? ? ? NULL? ? ? ? ? ? ? ? ? COMMENT '請(qǐng)求/響應(yīng)/請(qǐ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 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 '狀態(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 '接口的請(qǐng)求/響應(yīng)數(shù)據(jù)結(jié)構(gòu)',
? ??? ??`pub_sample`? ? ? mediumtext? ? ? NULL? ? ? ? ? ? ? ? ? COMMENT '請(qǐng)求/響應(yīng)/請(qǐ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ā)布記錄';
? ??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相關(guān)依賴如下所示
? ??<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>
? ? 注解:這里需要額外引入以下依賴防止啟動(dòng)報(bào)錯(cuò)找不到
? ??<parent>
? ???? <groupId>org.springframework.boot</groupId>
????? <artifactId>spring-boot-starter-parent</artifactId>
? ???? <version>2.0.3.RELEASE</version>
????? </parent>
? ? 五鲫寄、編寫ExampleModule類繼承SpringModule,并在創(chuàng)建項(xiàng)目的啟動(dòng)類上添加@EnableHasor头岔、@EnableHasorWeb兩注解來啟用 Hasor和Hasor Web塔拳,前者在bean上標(biāo)記了 @DimModule 注解并且實(shí)現(xiàn)了 Module 接口鼠证,那么它們會(huì)被作為 Hasor 的初始化 Module峡竣;后者配置?了Hasor 的全局?jǐn)r截器和監(jiān)聽器。
????@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));
????????}
????}
六量九、啟動(dòng)項(xiàng)目适掰,看到如下日志颂碧,項(xiàng)目則配置成功,可直接本地訪問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/