Java REST API 三层架构项目目录规划与使用建议

news/2025/9/22 22:09:33/文章来源:https://www.cnblogs.com/zengzuo613/p/19056430

Java REST API 三层架构项目目录规划与使用建议

2025-09-22 22:07  曾左  阅读(0)  评论(0)    收藏  举报

一. 背景介绍

当前,我们使用 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

典型的四大综合门户网站为食堂写个网站建设

From: http://www.51testing.com/html/44/17144-18146.html 1. 基本概念 实时传输协议(RTP,Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。传送音视频数据通常都会采用基于UDP的RTP传输,RTP为数…

网站开发看什么书汕头seo专家

场景 NameNode迁移,导致一个节点无法启动 异常 在Namenode主动迁移,或者Namenode机器挂掉无法恢复时,我们需要Namenode节点迁移,迁移经常会出现一个NameNode启动成功,另外一个standby启动失败,报错如下 …

网站建设内链免费装修设计网

风丘科技将首次亮相 EVM ASIA 2023 WINDHILL will debut EVM ASIA 2023 ——可持续移动的未来 —The Future of SUSTAINABLE Mobility EVM ASIA 2023是亚太地区电气化的国际性展会,专注于新能源汽车、充电技术及汽车零件制造等。展会致力于促进包括充电站、交通…

网站内容建设 内容审核流程装修公司网站建设的意义

一、源码特点 asp.net特色商品购物网站系统 是一套完善的web设计管理系统,系统采用mvc模式(BLLDALENTITY)系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 vs2010,数据库为sqlserver2008&a…

江苏扬州建设局网站网站建设制作好评语

淘宝/天猫获得淘宝商品详情 API 返回值说明 item_get-获得淘宝商品详情 API测试工具 taobao.item_get 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括…

国内有做外汇的正规网站吗关键词排名推广

java.util.concurrent.locks.Lock 接口是Java并发包中的一部分,它提供了比内置锁(即 synchronized 关键字)更灵活和强大的锁机制。通过使用 Lock 接口及其相关实现类,开发者可以获得更多的功能选项来控制线程间的同步行为&#xf…

如何选择网站开发公司做电影网站多少钱

前言 使用 API 网关作为内部服务面向客户端的单一入口,是一种普遍采用的架构模式。企业组织通过良好定义的 API 将内部系统向内部和外部用户公开,通常都会采用 API 网关来处理横向的关注点,包括访问控制、速率限制、负载均衡等等&#xff0c…

活动策划案怎么写网站优化排名易下拉技术

线程属于某一个进程 共同点:都能并发 线程共享变量,进程不共享。 多线程任务中,其中某一个线程调用了exit了,其他线程会跟着一起退出 如果是特定的线程就调用pthread_exit 失败返回的是错误号 下面也是

2025.9.22总结 - A

今天满课,上午是建模和数据结构,主要讲的还是基础,还有对UML的理解,下午Java,学到了,解决问题的,复杂问题简单化,简单问题流程化的思想,在解决问题时的分类转化思想,让问题更加简单,解决更加高效。

实用指南:GESP三级考纲+三级考试知识点详解

实用指南:GESP三级考纲+三级考试知识点详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

github操作备忘录

如何使用github1、创建repository在github上创建新的repository2、本地安装Git3、本地全局配置打开git-bash.exe,配置所有Git仓库的用户名和邮箱git config –global user.name "???" git config –glob…

流媒体网站建设规划镇江网站建设机构

Harbor基本介绍 1、Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,Harbor 是一个企业级的 Docker 私有仓库项目。 2、Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/L…

php 怎么做 网站 图片学校网站建设运行简介

用Maven install 对父工程安装到本地仓库

可以做ppt的网站有哪些内容河南省城乡建设厅官网

1.API 1.1API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这…

网站建设捌金手指下拉二七冷水滩网站建设

文章主题:有序序列合并🔥🔥🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的…

熟练掌握网站开发技术网站开发经验

来源:之江实验室、仿生深海软体机器人项目组、浙江大学▍适应万米静水压的软体机器人由于极端的静水压力,深海区域人们基本很难探测。位于西太平洋的马里亚纳海沟是已知的海洋最深处,水压高、温度低、完全黑暗,被称为“地球第四极…

网站阴影黔南州建设局网站

1. 说一下CSS的盒模型。 在HTML页面中所有的元素都可以看成是一个盒子。 盒子的组成:内容content、内边距padding、边框border、外边距margin。 盒模型的类型: 标准盒模型:width contentIE盒模型(怪异盒模型)&#…

如何自建网站做外贸做网站图片无法显示的原因

说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。以下两个是比较经典的动图了。二阶贝塞尔曲线:三阶贝塞尔曲线:由于在工作中经常要和贝塞尔曲线打交道,所以简单说一下自己的…

南山网站公司石家庄p2p网站开发

1.论文介绍 MAS-SAM: Segment Any Marine Animal with Aggregated Features MAS-SAM:利用聚合特征分割任何海洋动物 Paper Code(空的) 2.摘要 最近,分割任何模型(SAM)在生成高质量的对象掩模和实现零拍摄图像分割方面表现出卓越…

平度网站制作广州专业网站制作哪家专业

码元:一个固定时长的信号波形,代表不同离散数值的基本波形 1码元可以携带多个比特的信息量 例如:下图就称为二进制码元,因为只有两种状态,一种代表0状态,一种代表1状态 还有其他进制码元 时长称为码元宽…