Dataway介绍
Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。
这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。
Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只需要配置即可完成交付。
1、新建一个springboot工程、添加maven依赖
net.hasor hasor-spring 4.1.3net.hasor hasor-dataway 4.1.3-fix20200414mysql mysql-connector-java 5.1.48org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web com.alibaba druid-spring-boot-starter 1.1.22
2、配置Dataway和创建2张基础表
dataway 会提供一个界面让我们配置接口,这一点类似 Swagger 只要jar包集成就可以实现接口配置。找到我们 springboot 项目的配置文件 application.properties
mysql表结构的位置可以在依赖的jar包上图的位置复制,文章末位源码项目中我整理成一个sql文件,下载代码即可看到。
application.properties配置内容
3、配置中数据源采用druid+mysql+spring-boot-starter-jdbc的方式
4、将数据源设置得到Hasor容器中
Spring Boot 和 Hasor 本是两个独立的容器框架,我们做整合之后为了使用 Dataway 的能力需要把 Spring 中的数据源设置到 Hasor 中。
@DimModule@Componentpublic class DataWayModule implements SpringModule { @Resource private DataSource dataSource = null; @Override public void loadModule(ApiBinder apiBinder) throws Throwable { apiBinder.installModule(new JdbcModule(Level.Full, this.dataSource)); }}
项目启动的时候会调用loadModule方法,将datasource设置到Hasor中
5、添加springboot启动类
@EnableHasor()@EnableHasorWeb()@SpringBootApplication(scanBasePackages = {"com.seejoke.dataway"})public class DataWayApplication { public static void main(String[] args) { SpringApplication.run(DataWayApplication.class, args); }}
这一步非常简单,只需要再springboot启动类上面增加2个注解即可。
6、启动应用
在控制台看到上面信息后,dataway api workAt /api/就标识配置生效了,我们在浏览器中访问
"http://127.0.0.1:8081/interface-ui/"就可以看到期待已久的界面了,ps:访问地址记得带上最后的斜杠
6、新建一个接口
Dataway 提供了2种语言模式,我们可以使用强大的 DataQL 查询语言,也可以直接使用 SQL 语言(在 Dataway 内部 SQL 语言也会被转换为 DataQL 的形式执行。)
我们尝试在sql模式下执行一条sql语句,立刻就可以看到这条sql的查询结果了
var query = @@sql()return query()
执行后看到结果,我们可以将该接口保存
save===>test====>public发布后就可以访问生成的rest api了
访问刚才新建的api
为了测试方便,我创建了一个get方式的rest api,访问结果如上图。
总结
经过上面的几个步骤我们介绍了如何基于SpringBoot项目使用 Dataway 来简单的配置接口。Dataway 的方式确实给人耳目一新,一个接口竟然可以如此简单的配置出来无需开发任何一行代码,也不需要做任何 Mapping 实体映射绑定。