Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【意见收集】代码结构调整 #172

Open
Hccake opened this issue Apr 11, 2022 · 11 comments
Open

【意见收集】代码结构调整 #172

Hccake opened this issue Apr 11, 2022 · 11 comments
Labels
question Further information is requested
Milestone

Comments

@Hccake
Copy link
Member

Hccake commented Apr 11, 2022

考虑后续将此仓库再进行一次拆分与结构调整:

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

@Hccake Hccake added the question Further information is requested label Apr 11, 2022
@Hccake Hccake pinned this issue Apr 11, 2022
@Hccake
Copy link
Member Author

Hccake commented Apr 24, 2022

参考 spring-boot 早期组织结构,新增 ballcat-parent,父工程调整为 ballcat-build,可以从 parent 中分离出一些不需要透传给用户的东西

@Hccake Hccake unpinned this issue Apr 27, 2022
@Hccake Hccake pinned this issue Apr 27, 2022
@Mokaful
Copy link

Mokaful commented Apr 29, 2022

能否将权限模块单独抽离出来?
当需要权限模块的时候,引入权限模块和对接口进行权限标识,达到对资源的管控
当不需要权限模块,不引入权限模块,所有资源都是开放的

@Hccake
Copy link
Member Author

Hccake commented Apr 29, 2022

能否将权限模块单独抽离出来? 当需要权限模块的时候,引入权限模块和对接口进行权限标识,达到对资源的管控 当不需要权限模块,不引入权限模块,所有资源都是开放的

@Mokaful 不好意思。没有太听懂,你的意思是接口的权限拦截校验全部去掉是吗?

如果只是这个需求,现在就是支持的:
注册一个 CustomPermissionEvaluator 类型的 bean,重写其 hasPermission 方法,永远返回 true 即可取消 ballcat 自带模块中所有接口的权限控制

@ccwxl
Copy link

ccwxl commented May 3, 2022

有没有计划迁移到gradle

@Hccake
Copy link
Member Author

Hccake commented May 3, 2022

有没有计划迁移到gradle

如果项目模块达到一定量级的话,考虑迁移。
暂时模块数量不多,使用 maven 构建心智负担比较低

@ccwxl
Copy link

ccwxl commented May 4, 2022

比如ballcat-businesssystem 是不是不需要在分maven子模块(controller, modle, biz). 直接一个模块即可. 简单.

@Hccake
Copy link
Member Author

Hccake commented May 4, 2022

比如ballcat-businesssystem 是不是不需要在分maven子模块(controller, modle, biz). 直接一个模块即可. 简单.

是的,用户实际使用 ballcat-boot 模板上开发的单体业务是不需要做拆分的。
ballcat 这个仓库主要是依赖仓库,用户不需要关心。拆分是为了方便用户按需组合使用,方便用户使替换对应的模块,比如现在的授权服务器,就可以独立出来,只引入 system-biz,即可完成登录鉴权等控制。

但是为了方便的复用代码到后续的 cloud 项目支持,后面这个模块划分还是需要调整的,对于异构服务可能大家按照 api 文档开发,java 服务间,还是暴露出来一个 api 的模块供其他服务接入会好点(api 里面需要有基本传输的 vo 以及 dto),方便同步升级。

目前整体的思路还没有定好,你如果有对于兼容 cloud 使用的好的模块划分方案可以推荐下

@Hccake Hccake unpinned this issue Jun 4, 2022
@Hccake Hccake pinned this issue Jun 4, 2022
@Hccake Hccake added this to the 2.0.0 milestone Jul 13, 2022
@evil0th
Copy link
Contributor

evil0th commented Feb 17, 2023

代码格式建议:将tab修改为空格(主流)。
IDE提交自动格式化或者习惯性按了格式化快捷键都会因为tab被替换成了空格而出现大量改动

@Hccake
Copy link
Member Author

Hccake commented Feb 18, 2023

tab 和 空格每个人都有自己的喜好,这个重口难调,目前 ballcat 遵循 spring 规范,使用 tab 作为缩进,暂不考虑改动。

格式化快捷键的问题,你可以下载安装 spring-javaformat 提供的 idea 插件,将 idea 的格式化快捷键改为使用该插件处理即可避免此问题。

2.x 版本后对将取消 ballcat 父工程中的插件传递,是否使用该格式化插件交给业务开发者选择。
(目前可以取消使用 ballcat 作为父工程,使用 import ballcat-dependencies 的方式来管理依赖)

@Hccake
Copy link
Member Author

Hccake commented Mar 6, 2023

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 版本

@lingting
Copy link
Collaborator

2.x 版本 系统模块拆分
用户相关(用户, 组织, 角色 权限, 菜单) 移入 user
配置相关(系统配置, 字典) 移入 infrastructure

Hccake added a commit that referenced this issue Jun 6, 2023
Hccake added a commit that referenced this issue Jun 7, 2023
Hccake added a commit that referenced this issue Jun 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants