无障碍阅读他人开源项目结构:看完本文,你将信心满满

2023-10-24 15:20

本文主要是介绍无障碍阅读他人开源项目结构:看完本文,你将信心满满,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

46d5d2f7c1e2b09f339d5365aba6ef1e.jpeg

先看看阿里是怎么约定的

我印象中,以前在看《阿里巴巴Java开发手册》时,好像有关于工程结构和应用分层相关的内容,于是我回翻了一下,果然有:

a0cfb3443340c2e3215604d4ef044ca1.jpeg

它这里面讲的内容大概就是:关于一个正常的企业项目里一种通用的项目结构和代码层级划分的指导意见。

按这本书上说的,一般分为如下几层:

  • 开放接口层
  • 终端显示层
  • Web 层
  • Service 层
  • Manager 层
  • DAO 层
  • 外部接口或第三方平台

由于书中的篇幅关系,它这地方讲得比较笼统了,估计初学者看了还是会懵,所以接下来结合实际项目代码结构,来唠一唠具体的项目结构和代码分层。

通常的项目结构

首先说在前面的是:这东西并没有一套通用的标准,不同公司或者团队的使用习惯和规范也不尽相同。

我们就以当下非常火热的Spring Boot典型项目结构为例,创建出来的项目应该总体分为三大层:

30e8d2f846cb9aefe3eeba3217e67e59.jpeg
  • 项目根目录/src/main/java:放置项目Java源代码
  • 项目根目录/src/main/resources:放置项目静态资源和配置文件
  • 项目根目录/src/test/java:放置项目测试用例代码

而位于 /src/main/java目录下的Java源代码的组织结构大家比较关心,这地方也只能给出一个通常典型的结构,毕竟不同项目和团队实践不一样,稍许有区别,但整体安排应该差不多。而且如果是多模块的项目的话,下面的结构应该只对应其中一个模块,其他模块的代码组织也大致差不多。

474049f9363b49b227309742a3922a5d.jpeg

各个目录详细介绍:

0a00f0f5b5da3ca3a4d7ab86d3331720.jpeg

然后接下来 /src/main/resources目录,里面主要存放静态配置文件和页面静态资源等东西:

77f1cd143c72e73ab1cbc5edde5a3773.jpeg

当然,这地方估计有一个很多人都会纠结的关于 DTO/VO/DO等数据模型定义的区分。

这在《阿里巴巴Java开发手册》中倒是做了一个所谓的严格区分,那本书上是这样去定义的:

  • DO(DataObject):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
  • DTO(DataTransferObject):数据传输对象,Service或Manager向外传输的对象。
  • BO(BusinessObject):业务对象。由Service层输出的封装业务逻辑的对象。
  • AO(ApplicationObject):应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
  • VO(ViewObject):显示层对象,通常是Web向模板渲染引擎层传输的对象。
  • Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。

老实讲,看到这么多对象的定义,我也是很蒙的。实际项目开发时,我觉得没有必要刻意照搬去定义这么多层对象,这样后续做对象转换工作都能烦skr人。

出于简单起见,我个人觉得,只要保证业务逻辑层 Service和数据库 DAO层的操作对象严格划分出来,确保互相不渗透,不混用,问题应该就不大。

比如在我上面举例的这个项目的代码结构中, Service层处理的对象都定义在了 dto包里,而 DAO层处理的对象都放在了 entity包里了。

项目结构划分总结

如果从一个用户访问一个网站的情况来看,对应着上面的项目代码结构来分析,可以贯穿整个代码分层:

e23da41b742f539f541527b7eac2bd34.jpeg

对应代码目录的流转逻辑就是:

f99cb067e0bc1d1c5c0ef01ccd9af8ff.jpeg

我想,应该看得比较清楚了吧。

所以,以后每当我们拿到一个新的项目到手时,只要按照这个思路去看别人项目的代码,应该基本都是能理得顺的

一些注意事项

1、 Contorller层参数传递建议不要使用 HashMap,建议使用数据模型定义

2、 Controller层里可以做参数校验、异常抛出等操作,但建议不要放太多业务逻辑,业务逻辑尽量放到 Service层代码中去做

3、 Service层做实际业务逻辑,可以按照功能模块做好定义和区分,相互可以调用

4、功能模块 Service之间引用时,建议不要渗透到 DAO层(或者 mapper层),基于 Service层进行调用和复用比较合理

5、业务逻辑层 Service和数据库 DAO层的操作对象不要混用。 Controller层的数据对象不要直接渗透到 DAO层(或者 mapper层);同理数据表实体对象 Entity也不要直接传到 Controller层进行输出或展示。

这篇关于无障碍阅读他人开源项目结构:看完本文,你将信心满满的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/276072

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)

《JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)》本文介绍了如何在Windows系统上配置多版本JDK(以JDK8和JDK17为例),并通过图文结合的方式给大家讲解了详细步骤,具有... 目录第一步 下载安装JDK第二步 配置环境变量第三步 切换JDK版本并验证可能遇到的问题前提:公司常

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin