/machine-geek

Java快速开发项目,集成了RBAC的权限认证管理,加入了一系列的常用功能API,具有代码生成器功能……

Primary LanguageJava

该版本已废弃,请移步:

新的单体架构版本请移步:

简化版本单体架构后端

快速开发平台(单体架构版本)

这是一个作者自己肝了几个周从头敲到尾的项目,作为自己平时开发用。
配套的后台管理界面项目请见:通用后台管理
作者集成了许多常见的应用开发的框架,编写了一些常用的接口。
例如RBAC权限管理、邮件发送、图形验证码、代码生成器……
微服务版本请见微服务版本

配套前端界面预览

如果图片加载不出来是缓存的问题,请谅解。 预览图1 预览图2

开发环境

这是作者的开发环境,请参考再选择自己的版本。

  1. MySQL 8.0.22
  2. Redis 6.09
  3. Maven 3.6.3
  4. JDK 1.8

特性

  1. 项目结构清晰的分层,每个模块目标明确,代码注释详细,可以清晰的明白每个模块和类的作用。
  2. 集成了常见的应用开发的框架,加入了许多的常见配置,并注册到了IOC容器中,使用时直接@Autowired即可。
  3. 提供了常见的API接口,如文件上传、图形验证码、邮件发送……等,无需再次开发。
  4. 每一个服务都提供了接口和实现类,按统一的命名方式,可以轻松的替换和注入使用。
  5. RBAC基于角色的权限认证,剔除了Session,自定义了一系列的验证处理,信息权限存入Redis,无需担心集群部署的会话共享问题。
  6. WebSocket集成,提供了接口可以注入轻松发送,搭配了Redis的订阅发布,集群状态下也无需担心连接发送不到的问题。
  7. 代码生成器可以一键生成实体类映射类xml文件服务接口服务实现类控制器前端数据表页面API文件等等,使用的模板引擎,可以自定义自己的代码生成工具。

技术

我相信这些技术大家都耳熟能详了,我也不再说明每个框架的具体用途,所以就只是简单列举一下比较主要的几个框架,更多详情的依赖库请参考pom文件。
LombokDruidRedisSpring BootSpring SecurityMybatis PlusKnife4jFree Marker
特殊说明一下,很多都是SpringStarter,没有写全称,官方提供的Starter更方便,这样不会增加复杂性。

说明

写这个脚手架的时候,更多的是考虑到了通用性和扩展性的问题。
通用性:一定要是几乎所有后端都会用到的功能才会加入进来,所以短信发送、微信支付宝之类的代码量不多,作者考虑了过后还是决定不加入。
扩展性:虽然是单体架构,但是支持集群部署。
举个例子,Spring Security使用Session作为权限的附着点,而项目里自定义了Spring Security的验证机制,关闭了Session,使用AccessTokenRefreshToken,存储在Redis中,自定义了TokenFilter来为每一个携带Token的请求,附上权限信息。这样即便是在集群状态下也不会影响到他们的权限控制。

项目结构(自底向上)

项目是聚合工程,我会自底向上地解释每个模块的用途。

  • machine-geek-common:这个模块是用来放置一些自己写的工具类,或者一些无关于Web开发,比较通用的功能函数等。
  • machine-geek-framework:这个模块是用来集成框架的,里面有大量的Maven框架导包,然后有一些常见的框架配置类。
  • machine-geek-system:这个模块内容比较多,使用来实现系统功能的,例如安全配置、WebSocket、全局异常处理,代码生成器、邮件服务……,这个项目的代码几乎都在这个地方。
  • machine-geek-business:这个模块是用来预留基于这个项目扩展的业务代码,这样可以很好的与系统原有的功能模块区分开。
  • machine-geek-api:这个模块的内容是提供给前端接口使用的,也包含了一些常见的接口,例如:文件上传、图形验证码、Token刷新等。
  • machine-geek-application:这个模块作为最终打包的出口,加入了DevTool工具,和SpringBoot的打包模块,yml文件的配置。

关于作者

喜欢的话就Star一下吧!
也可以逛逛作者博客
和其他的项目作者Github

如果这个项目有帮助到您就请作者喝一杯咖啡吧!