# onflow-framework
**Repository Path**: decentant/onflow-framework
## Basic Information
- **Project Name**: onflow-framework
- **Description**: 如流后端框架,一个基于Kotlin语言,类驱动数据库的高效率后端开发框架,并且拥有高效率的代码生成引擎,为您的开发和变更保驾护航。
- **Primary Language**: Kotlin
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 0
- **Created**: 2025-06-29
- **Last Updated**: 2025-12-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Onflow如流后端开发框架
## 介绍
Onflow如流是一个基于Kotlin语言的超爽超爽的Java后端开发框架,基于SpringBoot 3.x开发,并使用JDK21,支持JDK21虚拟线程,提高项目吞吐量。使用的中间件包括:MySQL、Redis。没错基础就这两个!我不喜欢在基础模块加一堆乱七八糟的中间件进去,增加项目启动难度。
使用的依赖包括:MyBatisPlus、Knife4j、Fastjson2、Hutool、POI、Okhttp3、AdvanceExcel
该框架面向客户群体为:
* 想要快速搭建网站的个人开发者
* 中小型企业
## 特点
* 从善如流!如沁心流!
* 轻量级、高性能、可扩展、可定制
* 使用JDK21虚拟线程,提升性能
* 优化错误显示,拒绝打印无用错误信息
* 代码简洁,去除无聊的面向接口编程,controller层方法仅一行代码,service层基础方法代码不超过4行
* Entity类驱动数据库,变更Entity类可自动更新代码和数据库
* 超强的代码生成框架,后端、前端、SQL一站式生成,并有日志记录
* 支持增量式生成,任何Entity添加的字段都会被增量生成到代码中
* 拥有超强的文件传输中心
* 支持websocket,能够进行消息推送工作
## 项目结构
### 🍰onflow-framework
onflow-framework:根模块,用于定义各个组件的版本号,防止版本冲突
### 😎[onflow-core](onflow-core)
onflow-core:核心模块,定义了如流整个核心基础功能,简单业务只需要引入core模块就能在这基础上进行开发
### 🤣[onflow-generator](onflow-generator)
onflow-generator:代码生成模块,基于core模块,编写了代码生成引擎,可用于生成后端增删改查所有接口和对应的查询。使用Entity类同步数据库,生成建表和alter语句。甚至可以生成前端模块的代码,做到一个Entity类生成一个页面所有功能的代码,极大的提升了开发效率!
### 🥰[onflow-system](onflow-system)
onflow-system:系统模块,定义了系统基础功能,如用户、角色、权限、菜单、部门、字典、日志、定时任务、文件上传、邮件发送、短信发送、OSS上传、定时任务等后端基础功能。如果不需要可不引入该模块,直接引入到core或者generator模块即可。
#### [onflow-system-entity](onflow-system%2Fonflow-system-entity)
onflow-system-entity:系统模块的Entity类,定义了系统基础功能所需的Entity类,如用户、角色、权限、菜单、部门、字典、日志、定时任务、文件上传、邮件发送、短信发送、OSS上传、定时任务等后端基础功能所需的Entity类。这个entity模块可以给网站后台模块调用,免去创建Entity类的工作。
#### [onflow-system-adaptor](onflow-system%2Fonflow-system-adaptor)
onflow-system-adaptor:系统模块的适配器,定义了系统基础功能所需的适配器,且这个模块不包含任何接口,可给其他后台管理模块使用,免去了服务间调用的时间,提高开发效率。
#### [onflow-system-generator](onflow-system%2Fonflow-system-generator)
onflow-system-generator:系统模块的代码生成模块,基于通用的onflow-generator模块,用于生成系统相关联的数据,比如Api、菜单、组件等
#### [onflow-system-service](onflow-system%2Fonflow-system-service)
onflow-system-service:系统模块的Service层,定义了系统基础功能所需的Service层,包含了系统基础模块的所有接口,给系统管理后台使用。
### 😲[onflow-starter](onflow-starter)
onflow-starter:启动模块,包含启动类和打包模块
#### [onflow-starter-boot](onflow-starter%2Fonflow-starter-boot)
onflow-starter-boot:启动模块,仅包含了一个Application类,用于启动项目
#### [onflow-starter-cloud](onflow-starter%2Fonflow-starter-cloud)
onflow-starter-cloud:onflow支持cloud模式启动,需要对接nacos,启动项目时需要配置nacos地址
#### [onflow-starter-package](onflow-starter%2Fonflow-starter-package)
onflow-starter-package:打包模块,不包含任何源代码,仅包含打包脚本。注意,默认打包的模块为单机模式的onflow-starter-boot,如果需要打包cloud模式,请将pom.xml中的:
```xml
com.itdct.onflow
onflow-starter-boot
1.1-SNAPSHOT
```
改为
```xml
com.itdct.onflow
onflow-starter-cloud
1.1-SNAPSHOT
```
### 🔗[onflow-gateway](onflow-gateway)
onflow-gateway:网关模块,用于实现网关功能,基于SpringCloud Gateway实现,通过nacos实现服务注册和发现,以及负载均衡
#### [onflow-gateway-boot](onflow-gateway%2Fonflow-gateway-boot)
onflow-gateway-boot:网关启动器,用于启动网关
#### [onflow-gateway-package](onflow-gateway%2Fonflow-gateway-package)
onflow-gateway-package:gateway的打包模块,不包含任何源代码,仅包含打包脚本
## 快速开始
### 简易模式
使用idea创建项目后,使用maven仅引入代码生成器:
```xml
com.itdct.onflow
onflow-generator
1.1-SNAPSHOT
```
推荐使用generator模块,因为它也包含了core模块,且不包含任何系统模块接口,用于小项目,其带有代码生成功能,能够快速完成项目。
### 完整模式
使用idea创建项目后,使用maven引入完整项目:
```xml
com.itdct.onflow
onflow-service
1.1-SNAPSHOT
```
引入后可以立即获取后端项目所有基础接口功能,可以基于该项目进行开发,也可以基于本项目进行fork,开发自己的项目。
### 功能引入模式
如果不需要系统方面的接口,又需要系统级完整功能,比如字典、账号、菜单等待功能,可以仅引入adaptor模块:
```xml
com.itdct.onflow
onflow-adaptor
1.1-SNAPSHOT
```
### 为网站前台开发
如果需要为网站前台开发,可以仅引入entity模块,这样前台页面后端就不需要自己再去建Entity类:
```xml
com.itdct.onflow
onflow-entity
1.1-SNAPSHOT
```
### 代码编写
可以参考[SysAccountEntity.kt](onflow-system%2Fonflow-system-entity%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fitdct%2Fonflow%2Fsystem%2Faccount%2Fentity%2FSysAccountEntity.kt)
中的代码创建自己的Entity类,然后使用[Main.kt](onflow-system%2Fonflow-system-generator%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fitdct%2Fonflow%2Fsystem%2Fgenerator%2FMain.kt)生成对应的接口和代码。不需要的接口和方法可以在生成后自行删除即可。
## 项目编译
由于MyBatisX对于Kotlin写的Mapper.kt兼容性非常糟糕,以至于我这里的Mapper使用的还是java文件,因此如果直接使用mvn install会导致Mapper无法找到对应的Kotlin类而发生报错。因此先需要使用Kotlin插件进行编译,然后再使用Maven进行编译。
1. 使用Kotlin插件进行编译:
```shell
mvn org.jetbrains.kotlin:kotlin-maven-plugin:2.1.20:compile
```
2. 使用Maven进行编译:
```shell
mvn install
```
如果编译过程中出现错误,可以使用1,2两步重试几次,基本就能完成编译,如果还是出错,请检查JDK版本是否正确,Maven版本是否太低。
## 项目启动
目前有个两种方式启动onflow项目,一种是单机模式启动,一种是基于nacos的集群模式启动。
### 单机模式启动
1. 按照application-demo.yml[application-demo.yml](onflow-starter%2Fonflow-starter-boot%2Fsrc%2Fmain%2Fresources%2Fapplication-demo.yml)创建一个自己的application-yourname.yml文件,修改其中的配置信息
2. 直接启动[OnflowBoot.kt](onflow-starter%2Fonflow-starter-boot%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fitdct%2Fonflow%2FOnflowBoot.kt)这个类即可
### 集群模式启动
1. 首先启动nacos集群
2. 按照application-demo.yml[application-demo.yml](onflow-starter%2Fonflow-starter-cloud%2Fsrc%2Fmain%2Fresources%2Fapplication-demo.yml)创建一个自己的application-yourname.yml文件,修改其中的nacos连接信息
3. 将单机模式中的[application-demo.yml](onflow-starter%2Fonflow-starter-boot%2Fsrc%2Fmain%2Fresources%2Fapplication-demo.yml)中的内容复制到nacos中,并修改其中的配置信息
4. 启动cloud模式的Boot类:[OnflowCloudBoot.kt](onflow-starter%2Fonflow-starter-cloud%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fitdct%2Fonflow%2FOnflowCloudBoot.kt)
## Gateway启动
由于Gateway启用了负载均衡模式,使用的是lb://+服务名的模式,因此必须先启动nacos,再启动Gateway。
直接启动[OnflowGatewayBoot.kt](onflow-gateway%2Fonflow-gateway-boot%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fitdct%2Fonflow%2Fgateway%2FOnflowGatewayBoot.kt)这个类即可
## 项目部署
目前以package结尾的模块就是打包用的,执行mvn package后可以获得项目的tar.gz包,里面包含项目所有的lib包和配置文件,可以直接上传到服务器,使用命令
```shell
tar -zxvf 项目名.tar.gz -C 目标路径
```
解压后,进入bin目录,执行[start.sh](onflow-starter%2Fonflow-starter-package%2Fbin%2Fstart.sh)即可启动项目。
注意!如果是集群模式启动,需要将配置文件上传到nacos中才能启动项目。
## 项目主要依赖
* JDK:大于等于21
* SpringBoot:3.5.5
* Kotlin:2.1.20
* Maven:3.9.9
* MySQL数据库:推荐使用5.7及以上版本
* Redis:推荐使用6.0及以上版本
## todo
1. 菜单搜索跳转功能
2. Excel导入导出代码增量生成
3. 短信发送
4. sftp文件上传
5. OSS文件上传
## 捐赠
如果大家觉得项目不错,对开发效率有所提升,欢迎大家进行捐助,我会非常感谢的!
### 支付宝
### 微信
## 联系作者
* CSDN博客:[https://profile-avatar.csdnimg.cn/e3bd40a204d0491eb14afe2bf25f4d29_dctant.jpg](https://blog.csdn.net/DCTANT)
* 邮箱:[2427746718@qq.com](mailto:2427746718@qq.com)
* QQ闲聊群:170618278