当前位置:网站首页>让人上瘾的新一代开发神器,彻底告别Controller、Service、Dao等方法
让人上瘾的新一代开发神器,彻底告别Controller、Service、Dao等方法
2022-07-30 14:44:00 【架构师修炼】
目录
- 初衷
- 特性
- 传统开发步骤
- 演示说明
初衷
用尽可能简单的方式,完成尽可能多的需求。通过约定的方式实现统一的标准。告别加班,拒绝重复劳动,远离搬砖。
特性
如下:
- 用于快速开发 API 接口。不再定义 Controller,Service,Dao,Mybatis,xml,Entity,VO 等对象和方法。
- 可视化界面,将入参自动封装到可执行的脚本上,支持所有关系性数据库 SQL 执行语句,非关系型 MONGODB 查询语句,欢迎扩展。
- 完全基于 springboot2.x 作为 springboot 项目的 stater 方式集成,无侵入性,新老项目都能快速集成。
- 只需编写一行代码即可完成大部分的业务需求开发,使用难度级别(测试 or 运维)也可参与开发。
- 在线动态编译,无需重启,即时生效,多数据源操作。
- 版本控制,历史记录比对,回滚等功能。
- 远程一键发布到线上环境。
- 线上 POSTMAN 调试,保存 POSTMAN 信息或三方文档的自动生成,历史调用记录存储,回塑。
- 代码提示,SQL 提示,语法提示。
- 用户管理控制,安全性控制,以及历史行为记录。
- 经过多次项目验证,传统业务型开发,服务端效率能够提升 3-5 倍,前后端联调提升效率 1 倍,测试效率 2 倍提升。
传统开发步骤
如下:
- 增加一张表
- 创建实体对象,映射这张表
- 创建 API 入参 VO
- 创建 API 出参 VO
- 创建 Controller
- 创建 Service
- 创建 Dao
- 创建 Mapper,xml 或者 JPA
- 在 mysql 客户端,或者 mongo 客户端中写执行脚本语句,复制到代码中
- 反复重启,进行接口自测
- 编写 API 文档
- 完成一个功能点开发
使用一些工具比如 mybatis plus,jpa 或者 idea 的 Easy code、MybatisCodeHelperPro 等可以一键生成一些基于单表的操作的相关代码。
但是业务场景来说,可能喜欢更灵活,代码执行效率更高的一些操作方式,并且一个项目开发中,从来不仅仅是单表的一些操作操作。
市面上就上面的这些问题,提供了 APIJSON 和 GraphQL 等解决方案,这两个工具相对操作数据库相对很灵活,但是操作难度,和学习成本高,并且适合场景也是有限,如果要实现简单的业务处理逻辑会比较复杂。
那么,我希望有一种功具,它可以像 mybatis xml,像 metabase BI,一样,能够直接操作原生的数据库查询及操作语句。
并且可以有 springboot 的 restful 这种业界标准的接口定义/及参数定义方式,并且按照统一约定的方式,省略三层 MVC 的定义,并且能够对数据进行一些逻辑处理,以满足多元化的业务需求。
最好是作为一个插件的形式,能够很好的集成在现有项目中,不会影响到现有的业务逻辑处理。
这就是我要介绍的一款工具 Rocket API:
https://gitee.com/alenfive/rocket-api-doc/wikis/pages
区别于前两类的设计方式不同点在于:
①基于 springboot 开发。包括接口的注册,参数的获取,输入输出的消息转换,都是基于 springboot 的生态环境,能无侵入性集成于 springboot 项目中。
如果你有基于 springboot 实现了全局异常处理,返回值统一封装,权限控制等,不用担心,都在你的管控范围内。
②参考于 mybatis 的参数定义方式,不同点在于使用默认大于配置的逻辑,实现参数的注入直接来源于请求参数,省略了传统 MVC 实体类,方法,VO 等定义。
③默认担供了内部函数,可以很简单的实现 多表/多库的增/删/改/查,导出,导入,上传,下载,分页查询等功能。
④提供了基于 Groovy 的语法解析,可以实现 Groovy 的一些逻辑处理。
⑤提供了调用 springboot bean 对象的方法及其他任意 java 定义的静态类,方法和对象,这意味着我能够调用公共定义的类,或者之前在项目中定义的 service,dao 和 utils。
⑥因为基于的 groovy 动态语法解析,所以代码修改,或者线上问题的处理能够不用重启服务,也不用升级代码就能够完成功能开发和问题处理,这对开发效率而言会有很大的提升。
⑦传统业务开发,不仅有服务端的开发,还有相对应的文档生成,前后端对接,以及测试配合。
“Rocket API” 提供了 POSTMAN 的操作页面,能够将参数的请求值,请求类型,响应等保存起来,给予前端做真实数据的对接,而不是类 yapi,或者 swagger 之类生成的不能使用的假数据。
基于这些真实的请求参数和返回值,提供了外部接口能力,测试团队可以以此来做接口的一键冒烟测试和文档的一键生成。
演示说明
接口功能逻辑页面:
接口功能自测页面:
文档和演示地址:
https://gitee.com/alenfive/rocket-api-doc/wikis/pages
集成方式:
①添加依赖:
<dependency>
<groupId>com.github.alenfive</groupId>
<artifactId>rocket-api-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
②数据源配置:
@Component
public class DefaultDataSourceManager extends DataSourceManager {
@Autowired
private JdbcTemplate jdbcTemplate;
@PostConstruct
public void init() {
Map<String,DataSourceDialect> dialects = new HashMap<>();
dialects.put("mysql",new SqlDataSource(jdbcTemplate,true));
super.setDialectMap(dialects);
}
}
③最新建表脚本查看:
https://gitee.com/mihuajun/rocket-api-doc/wikis/pages?sort_id=2670007&doc_id=859283
启动项目,访问地址:
http://localhost:8080/interface-ui
边栏推荐
- This editor actually claims to be as fast as lightning!
- 基于FPGA的DDS任意波形输出
- 瑞吉外卖项目实战Day02
- GUCCI、LV等奢侈品巨头如何布局元宇宙的,其他品牌应该跟上吗?
- MaxWell抓取数据
- MongoDB starts an error Process: 29784 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
- GeoServer + openlayers
- 这个编辑器居然号称快如闪电!
- 使用 protobuf 进行数据序列化
- 微服务架构下的核心话题 (二):微服务架构的设计原则和核心话题
猜你喜欢
我们公司用了 6 年的网关服务,动态路由、鉴权、限流等都有,稳的一批!
面试何惧调优!腾讯技术官私藏的性能优化方案手册,原理实战齐全
超T动力 盈运天下——中国重汽黄河/豪沃WP14T产品首发荣耀上市!
【云原生】服务行业案例-不可预测的并发场景解决方案
The evolution of content products has three axes: traffic, technology, and product form
Huawei issues another summoning order for "Genius Boys"!He, who had given up an annual salary of 3.6 million, also made his debut
关于mariadb/mysql的user表:密码正确但登录失败,可能与mysql的空用户有关
一文读懂网络效应对Web3的重要意义
SLF4J的使用
GUCCI、LV等奢侈品巨头如何布局元宇宙的,其他品牌应该跟上吗?
随机推荐
Compile, link, notes - 3
Flink real-time data warehouse completed
Distributed pre-course: MySQL implements distributed locks
MySql error: SqlError(Unable to execute query", "Can't create/write to file OS errno 2 - No such file...
去腾讯面试,直接让人出门左拐 :幂等性都不知道!
机房布线的至高境界,美到窒息
微服务架构下的核心话题 (二):微服务架构的设计原则和核心话题
JUC common thread pool source learning 02 ( ThreadPoolExecutor thread pool )
面试何惧调优!腾讯技术官私藏的性能优化方案手册,原理实战齐全
GeoServer + openlayers
Alluxio为Presto赋能跨云的自助服务能力
编译、链接 - 笔记 - 3
MongoDB starts an error Process: 29784 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
JVM performance tuning
CVE-2022-33891 Apache Spark 命令注入复现
100w的数据表比1000w的数据表查询更快吗?
异常情况处置方案
数据库日期类型字段设计,应该如何选择?
4 senior experts share the insider architecture design and implementation principles of Flink technology with years of experience in large factories
SEATA分布式事务