Spring-hasor, spring和hasor整合

背景

近期的工作主要是NLP项目,新的项目有三十多个表,每个nlp表数据都要提供对外api,仅通用的增删改查算都100+个接口,单个接口研发工作量非常大。而Hasor能让SpringBoot不需要Controller、Service、DTO、PO、VO、Mapper这听能够节省我不少工作量。

介绍

Hasor 介绍

Hasor官方
官网的部分简介
Hasor是一个完整的框架体系,它独有的框架扩展能力可以使新的能力完全无缝的集成到统一的 API 体系中。我们就只需要扩展 Hasor,而得到我们所需要的接口,而不需要向核心框架添加每个特性。

Hasor 的扩展能力更像是一个乐高玩具的接口,任何人都可以通过非常简单的方式提供乐高积木,然后轻松的将它们融合到一起。在使用的过程中完全感受不到背后是多个不同的框架在协作。

Hasor 的目标是使开发和调试变得更容易和更快。

Dataway介绍

dataway官方
Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布,一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。

在这里插入图片描述
Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只需要配置即可完成交付。从而避免了从数据存取到前端接口之间的一系列开发任务,例如:Mapper、BO、VO、DO、DAO、Service、Controller 统统不在需要。

调研

我为什么要调研这个框架呢?

最开始在出这三十二个表的查询列表接口和查询详情接口时,还没使用hasor。写每个接口都要先写Mapper类,再根据输入和输出的要求创建对应的PO、VO、DTO类,还要打开数据库一个个复制这个表的字段名,下划线改驼峰,感觉我的左手小拇指都焊死在ctrl键上了。以及疯狂的、重复性的敲private String。这是一种及其无聊且没有难度的重复性活动。
加上,最近需要给其他项目组提供接口,而对方需要的接口都是非常简单的查询数据库接口,比如select * from tableA, select english_name from tableB where id = 1。这种接口一下就要出五个,一个个的写效率非常低,而我又只是需要将数据库查到的结果反馈给其他项目组的开发人员。

主打场景

取数据:如果你只想从数据库或者服务中获取某类数据,不需要:VO、BO、Convert、DO、Mapper 这类东西。

存数据:如果是从页面表单递交数据到数据库或者服务,免去 BO、FormBean、DO、Mapper 这类东西。

数据聚合:基于服务调用结果经过结构转换并响应给前端。将数据库和服务等多个结果进行汇聚然后返回给前端。

优缺点

知道这个框架后安排了些时间,在原有服务上添加了Hasor依赖试了一下。
优点:

  1. 避开 COC 原则的原因是, COC 虽然已约定的方式降低了整个框架的设计复杂度;

Convention over Configuration(CoC)– 惯例优于配置原则
简单点说,就是将一些公认的配置方式和信息作为内部缺省的规则来使用。例如,Hibernate的映射文件,如果约定字段名和类属性一致的话,基本上就可以不要这个配置文件了。你的应用只需要指定不convention的信息即可,从而减少了大量convention而又不得不花时间和精力啰里啰嗦的东东。配置文件很多时候相当的影响开发效率。

  1. 注解化开发;
  2. 无代码配置我只需要设置一个url,写一句sql,再写一句Json的请求体, 就能创建一个接口。其次也减少了只是select * from tableA这种查询的api;

缺点:

其他

Hasor配置的接口的返回字段直接映射的数据库的字段名也就是存在下划线,但是我们现在做java项目规范的命名方式用的是驼峰。需要考虑到云交付用的驼峰命名和其他项目组可能要用到下划线方式命名。如何区分?
在这里插入图片描述

分页:https://www.dataql.net/docs/dataql/sql/execute
自定义结果格式:https://xie.infoq.cn/article/ee6935264f6de4f0de10d71fe

将api发布到swagger里:https://blog.csdn.net/u011047968/article/details/132212441?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-132212441-blog-122538965.235%5Ev38%5Epc_relevant_anti_vip&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-132212441-blog-122538965.235%5Ev38%5Epc_relevant_anti_vip&utm_relevant_index=9

Hasor 同 Spring OSGi 的比较及设计思想:https://my.oschina.net/ta8210/blog/188442

设置admin:https://github.com/ClouGence/hasor/blob/master/hasor-dataql/dataql-dataway/src/main/resources/META-INF/hasor-framework/dataway-hconfig.xml

<p>Hasor开发框架是一款基于Java语言的应用程序开发框架,它的核心设计目标是提供一个简单、切必要的环境给开发者。开发者可以在此基础上,通过Hasor强有力的粘合机制,构建出更加完善的应用场景。同时Hasor的各种内置插件也会帮助开发者进行快速开发。 基于目前Hasor内核上已经发展出DB、Web、Restful三大独立的基础框架。</p><p>特征: 1、IoC/Aop编程模型,设计精巧,使用简单 2、COC原则的最佳实践,‘零’配置文件 3、微内核 + 扩展,基于内核已发展出DB、Web、Restful三大独立的基础框架 4、真正的零开发,解析项目特有的自定义Xml配置 5、支持模板化配置文件,程序打包之后一套配置通吃(日常、预发、线上)以及其它各种环境 6、完备的JDBC操作接口,支持Result -> Object映射 7、提供三种途径控制事务,支持七种事务传播属性,标准的事务隔离级别 8、支持多数据源、及多数据源下的事务控制(非JPA) 9、内置事件机制,方便进行业务深度解耦,使业务逻辑更佳清晰 10、支持Web类型项目开发,提供restful风格的mvc开发方式 11、支持Form表单验证、支持场景化验证 12、提供开放的模版渲染接口,支持各种类型的模版引擎 13、提供丰富的工具箱,帮助您快速开发,有了它您甚至不需要 apache-commons 14、支持log4j、logback等多种主流日志框架 15、体积小,无第三方依赖</p><p>最低要求: 1、jdk6 2、servlet 2.3</p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值