ballcat
ballcat copied to clipboard
【意见收集】代码结构调整
考虑后续将此仓库再进行一次拆分与结构调整:
1. 将所有的业务模块迁移到独立仓库
新建一个业务仓库 ballcat-business,将 ballcat-system、ballcat-log 、ballcat-i18n 等等业务模块迁移过去。
2. 此模块只保留与业务无关的功能模块和自动配置模块
功能模块:ballcat-framework 和 自动配置模块:ballcat-starter
- 将 ballcat-common 和 ballcat-extend 的相关模块整合为 ballcat-framework 模块
- 将 ballcat-starter 中的所有模块进行拆分,功能代码迁移到 ballcat-framework 模块中,starter 中仅保留自动配置类。
- 功能模块命名精简,如 ballcat-common-websocket 迁移后将改为 ballcat-websocket
3. 依赖管理模块拆分
目前的 ballcat-dependency 模块中,既管理了 ballcat 本身项目的相关依赖,又管理了 ballcat 所依赖的第三方依赖,考虑拆分为 ballcat-bom 和 ballcat-dependency,一个管理 ballcat 自身,一个管理第三方依赖
由于涉及到的改动较大,~~所以预计在升级 spring-boot 3.x 时处理,来个大版本更新~~
在 2.0 版本进行模块改动 在 3.0 版本进行升级 springboot3.x + java17,正好可以版本对齐
如果大家对模块拆分有更好的建议欢迎在此指出,集思广益
group id 和 包名需要统一整改
剔除 hccake 的个人名称,目前由于 ballcat.com 域名已经被他人购买 所以考虑替换为 cn.ballcat 或者 org.ballcat
参考 spring-boot 早期组织结构,新增 ballcat-parent,父工程调整为 ballcat-build,可以从 parent 中分离出一些不需要透传给用户的东西
能否将权限模块单独抽离出来? 当需要权限模块的时候,引入权限模块和对接口进行权限标识,达到对资源的管控 当不需要权限模块,不引入权限模块,所有资源都是开放的
能否将权限模块单独抽离出来? 当需要权限模块的时候,引入权限模块和对接口进行权限标识,达到对资源的管控 当不需要权限模块,不引入权限模块,所有资源都是开放的
@Mokaful 不好意思。没有太听懂,你的意思是接口的权限拦截校验全部去掉是吗?
如果只是这个需求,现在就是支持的:
注册一个 CustomPermissionEvaluator
类型的 bean,重写其 hasPermission
方法,永远返回 true 即可取消 ballcat 自带模块中所有接口的权限控制
有没有计划迁移到gradle
有没有计划迁移到gradle
如果项目模块达到一定量级的话,考虑迁移。 暂时模块数量不多,使用 maven 构建心智负担比较低
比如ballcat-business
的system
是不是不需要在分maven
子模块(controller, modle, biz). 直接一个模块即可. 简单.
比如
ballcat-business
的system
是不是不需要在分maven
子模块(controller, modle, biz). 直接一个模块即可. 简单.
是的,用户实际使用 ballcat-boot 模板上开发的单体业务是不需要做拆分的。 ballcat 这个仓库主要是依赖仓库,用户不需要关心。拆分是为了方便用户按需组合使用,方便用户使替换对应的模块,比如现在的授权服务器,就可以独立出来,只引入 system-biz,即可完成登录鉴权等控制。
但是为了方便的复用代码到后续的 cloud 项目支持,后面这个模块划分还是需要调整的,对于异构服务可能大家按照 api 文档开发,java 服务间,还是暴露出来一个 api 的模块供其他服务接入会好点(api 里面需要有基本传输的 vo 以及 dto),方便同步升级。
目前整体的思路还没有定好,你如果有对于兼容 cloud 使用的好的模块划分方案可以推荐下
代码格式建议:将tab修改为空格(主流)。 IDE提交自动格式化或者习惯性按了格式化快捷键都会因为tab被替换成了空格而出现大量改动
tab 和 空格每个人都有自己的喜好,这个重口难调,目前 ballcat 遵循 spring 规范,使用 tab 作为缩进,暂不考虑改动。
格式化快捷键的问题,你可以下载安装 spring-javaformat 提供的 idea 插件,将 idea 的格式化快捷键改为使用该插件处理即可避免此问题。
2.x 版本后对将取消 ballcat 父工程中的插件传递,是否使用该格式化插件交给业务开发者选择。 (目前可以取消使用 ballcat 作为父工程,使用 import ballcat-dependencies 的方式来管理依赖)
2.x 版本 pom 计划改动:
-
参考 springboot 1.x 版本,父项目拆分为 ballcat-build 和 ballcat-parent,build 复制管理项目内部打包编译要的插件,parent 负责管理依赖(引入 dependency)和子模块,保证了 ballcat 内部的默认的格式化校验、flatten、profile 等插件的使用,同时不再传递给用户。
-
添加 git 本地钩子管理,ballcat 的开发者必须在提交时进行格式化
-
添加 deploy-snapshot 和 deploy-release 的 profile, 分别在开发者 commit 和 release 的时候进行自动发布快照和对应的 release 版本
2.x 版本 系统模块拆分 用户相关(用户, 组织, 角色 权限, 菜单) 移入 user 配置相关(系统配置, 字典) 移入 infrastructure