登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Java REST API 三层架构项目目录规划与使用建议 ...
Java REST API 三层架构项目目录规划与使用建议
[ 复制链接 ]
能杜孱
2025-9-22 21:34:37
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
一. 背景介绍
当前,我们使用 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
三层
架构
相关帖子
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
酷狗音乐api接口抓取 | 音乐管理系统
Java Optional 完全指南:优雅处理 null 的利器
用 .NET 最小化 API 构建高性能 API
上下文协议(MCP)Java SDK 指南
Apipost分支功能:为API开发打造专属的成本控制与协作流程
印度股票数据 API 对接实战指南(含实时行情与 IPO 数据)
Java函数式接口——渐进式学习
大语言模型~Ollama本地模型和java一起体验LLM
日本股票 API 对接实战指南(实时行情与 IPO 专题)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
2
307
肿圬后
2025-12-16
安全
酷狗音乐api接口抓取 | 音乐管理系统
0
641
言晓莉
2025-12-16
业界
Java Optional 完全指南:优雅处理 null 的利器
0
970
古修蟑
2025-12-17
业界
用 .NET 最小化 API 构建高性能 API
0
1019
科元料
2025-12-17
业界
上下文协议(MCP)Java SDK 指南
0
294
豌笆
2025-12-17
业界
Apipost分支功能:为API开发打造专属的成本控制与协作流程
1
671
刎唇
2025-12-17
安全
印度股票数据 API 对接实战指南(含实时行情与 IPO 数据)
0
699
裴涛
2025-12-17
业界
Java函数式接口——渐进式学习
0
491
列蜜瘘
2025-12-18
安全
大语言模型~Ollama本地模型和java一起体验LLM
0
479
裴涛
2025-12-18
安全
日本股票 API 对接实战指南(实时行情与 IPO 专题)
0
220
甄婉丽
2025-12-19
回复
(3)
扈梅风
2025-10-9 17:52:41
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
懂技术并乐意极积无私分享的人越来越少。珍惜
啤愿
2025-12-11 04:34:40
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
庞环
4 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
能杜孱
4 天前
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
599
alist如何将默认布局设置为图片布局
1007
Kali2025.4+Cherry Studio一键配置HexStrik
417
PHP 之高级面向对象编程 深入理解设计模式
414
PHP 之高级面向对象编程 深入理解设计模式
570
升级curl版本,及升级后引起的动态库链接不
294
2025年GEO优化服务商全景对比:五大核心维
779
AI Agent详解
983
Buildah 简明教程:让镜像构建更轻量,告别
610
OceanBase 在滴滴大规模运维经验以及新功能
975
[CSS+]HTML Learn Data Day 2
96
掌握相关性分析:读懂数据间的“悄悄话”
138
嵌入式UI框架-抗锯齿画圆弧算法
935
嵌入式UI框架的渐变原理、渐变算法
220
日本股票 API 对接实战指南(实时行情与 IP
562
解决Docker磁盘空间告急:认识并清理“悬空
394
别再只会算直线距离了!用“马氏距离”揪出
530
企业进行信息化后,一定会提高效率吗?真相
516
n8n整合ffmpeg
492
从random随机数看验证码重复数字
525
OceanBase 向量索引优化指南