# 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