登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Java REST API 三层架构项目目录规划与使用建议 ...
Java REST API 三层架构项目目录规划与使用建议
[ 复制链接 ]
能杜孱
2025-9-22 21:34:37
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
一. 背景介绍
当前,我们使用 Spring Boot + Mybatis + Maven 技术栈,按照微服务设计的要求(小而自治)开发 Java 应用,不推荐和使用 Module 实现项目分层。
二. 规范意义
规范 Java 项目的目录结构是 Java 工程化的基础,也是打通 DevOps 流程的起点。合理的目录结构能减轻设计负担,提升项目的模块化程度与可维护性,促进团队协作,降低沟通成本,确保研发、测试、编译、部署和交付等环节的标准化与一致性。实际制定时,应结合技术栈、项目管理工具以及组织内部习惯(习惯取代配置)来制定合理的目录结构。这一规范将直接影响开发体验、维护效率、标准化实施和交付质量。
三. 思考与设计点
3.1 数据实体目录规划与使用建议
数据实体在项目中承担载体和传输的作用,是项目重要组成部分,其目录规范与使用建议可参考:Java 三层架构项目中数据实体目录规划与使用建议。
3.2 controller、service 和 dao 子包该如何划分?
相比业务需求的多样性,数据源相对较为单一和固定,建议 dao 中子包按数据源划分,controller、service 子包或业务类可以考虑按业务划分,以适应业务多样性。
3.3 自动和人工生成的同类实体类如何存放?
自动生成的代码不应被人为改动,否则后续可能存在不一致的问题。建议将自动生成和人为创建的同类代码分别保存在不同的目录,目录名分别为:generator 和 custom。例如,mybatis-generator 生成的 PO 实体,建议保存在 po.db.{dbname}.generator 目录下;人为创建的与该 db 相关的 PO,保存在 po.db.{dbname}.custom 目录下,mapper.xml 和 Mapper 类同理。
3.4 配置与工具类如何存放?
(1)配置类,建议按数据源或数据类型,统一存放在 config 包(目录)下,如 enums、properties(项目配置信息)、kafka、redis、retrofit 等,常量类 Constants 建议也保存在该包下。
(2)工具类,建议存放在 util 包下,类名以 Util 结尾。
四. 推荐项目结构及命名规范
src/main/java
└── com
└── example
|── config
│ │── enums
│ │── properties
│ │── kafka
│ │── redis
│ │── retrofit
│ └── Constants.java
├── model
│ │── dto
│ │ ├── in
│ │ │ └── UserDTOIn.java
│ │ │── out
│ │ │ └── UserDTOOut.java
│ ├── bo
│ │ └── UserBO.java
│ ├── po
│ │ ├── db
│ │ │ ├── {dbname}
│ │ │ │ ├── generator
│ │ │ │ │ └── UserPO.java
│ │ │ │ ├── custom
│ │ │ │ │ └── User{XXX}PO.java
│ │ ├── http
│ │ ├── redis
│ │ ├── kafka
│ ├── converter
│ │ ├── dto
│ │ │ ├── in
│ │ │ │ └── UserDTOInConverter.java
│ │ │ │── out
│ │ │ │ └── UserDTOOutConverter.java
│ │ ├── bo
│ │ │ └── UserBOConverter.java
│ │ │── po
│ │ │ └── UserPOConverter.java
├── controller
├── service
│ ├── bussinessA
│ ├── bussinessB
├── dao
│ ├── mapper
│ │ ├── {dbname}
│ │ │ ├── generator
│ │ │ │ └── UserMapper.java
│ │ │ ├── custom
│ │ │ │ └── UserCustomMapper.java
│ ├── http
│ ├── redis
│ ├── kafka
├── util
│ └── ListUtil.java
└── Application.java
└── resources
│ ├── mapper
│ │ ├── {dbname}
│ │ │ ├── generator
│ │ │ │ └── UserMapper.xml
│ │ │ ├── custom
│ │ │ │ └── UserCustomMapper.xml
│ │── application.yml
│ │── application-{env}.yml
└── test
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Java
REST
API
三层
架构
相关帖子
Flink学习笔记:整体架构
Java+Playwright自动化测试-27- 操作单选和多选按钮
具身智能:零基础入门睿尔曼机械臂(二)——从API例程到Python实操全解析
在java中实现c#的int.TryParse方法
多进程架构+多系统兼容,开发必备!
Java+Playwright自动化测试-26- 操作Select下拉选择框
VUE中使用AXIOS包装API代理
【Java】ThreadLocal源码解析
Java关键字解析之abstract:抽象的本质、规范定义与多态基石
[数据结构/Java] 数据结构之循环队列
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Flink学习笔记:整体架构
0
248
越蔓蔓
2025-12-04
业界
Java+Playwright自动化测试-27- 操作单选和多选按钮
1
26
沦嘻亟
2025-12-07
安全
具身智能:零基础入门睿尔曼机械臂(二)——从API例程到Python实操全解析
0
976
邹语彤
2025-12-08
安全
在java中实现c#的int.TryParse方法
0
815
歇凛尾
2025-12-09
安全
多进程架构+多系统兼容,开发必备!
1
44
百里宵月
2025-12-11
业界
Java+Playwright自动化测试-26- 操作Select下拉选择框
0
273
任俊慧
2025-12-12
安全
VUE中使用AXIOS包装API代理
0
524
峰邑
2025-12-12
业界
【Java】ThreadLocal源码解析
0
132
祉遛吾
2025-12-13
业界
Java关键字解析之abstract:抽象的本质、规范定义与多态基石
0
24
斜素欣
2025-12-13
安全
[数据结构/Java] 数据结构之循环队列
0
471
豺独
2025-12-14
回复
(2)
扈梅风
2025-10-9 17:52:41
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
啤愿
3 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
能杜孱
3 天前
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845356
3934307807
991123
4
xiangqian
638210
5
韶又彤
9999
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
933
【EF Core】“Code First”方案下以编程方
470
[数据结构/Java] 数据结构之循环队列
456
理解整数在计算机中的表示
201
北京上门收画服务权威推荐榜单
216
关于renpy游戏小范围QQ群内部测试的一个思
23
Java关键字解析之abstract:抽象的本质、规
446
10GB vs 600MB:我们弃用 GitLab,选择了这
165
Python 潮流周刊#131:从零开始构建智能体
872
flask基础知识深入——会话管理:Flask Ses
109
推荐几款免费免登录无损高质量图片压缩工具
640
玩转 | q群智能聊天机器人 —— MaiBot(麦
997
offline meta-RL | 近期工作速读记录
665
C#AI系列(5): C#离线实现高效OCR
199
这才是vibe coding正确的打开方式 - 手把手
547
huggingface_hub 1.0 正式版现已发布:开源
5
读捍卫隐私05数字照片
833
嵌入式系统内存魔法之分散加载
747
嵌入式系统内存魔法之分散加载
132
【Java】ThreadLocal源码解析
34
观察者模式,发布/订阅模式,与回调函数