目录
前言
正文
gateway文件夹
common文件夹
server文件夹
尾声
- 🔭 Hi,I’m Pleasure1234
- 🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.
- 👯 I’m studying in University of Nottingham Ningbo China
- 📫 You can reach me by url below:
- My Blog Website: https://blog.yiming1234.cn
- My CSDN Blog:
- My Email:Pleasure@yiming1234.cn
- My Github:Pleasurecruise (自由的世界人) · GitHub
- It's my pleasure to see you follow me!
原文地址:JavaWeb开发中常见的目录作用 - Pleasure的博客
下面是正文内容:
前言
这是一篇笔记
主要记录一些 Java 开发中会遇到的:
常见文件的分类依据,以及主要的作用。
方便初次接收项目时结构功能的梳理,以及各服务作用的理解。
正文
这里还是具体拿个例子来进行说明。
常见的项目文件为了后续更新与维护的方便,一般不会分成这么多的服务模块。
一般就会分为下面提到的三个类型的文件夹。
下面的目录只是为了方便学习,减少因为单独文件的错误而导致整个后端服务无法启动的情况。
视项目复杂程度而定,下面提到的所有可能情况,在实际应用中并不全部都需要用到。
这是一个包含许多不同微服务的JavaWeb项目文件,作用是一个简单的拼车系统。
gateway文件夹
顾名思义,在微服务架构中扮演网关服务(Gateway Service)的角色,是系统与外部世界(通常是客户端应用程序)之间的中间层。
- 路由(Routing):网关服务充当请求的入口,根据请求的目标地址或其他条件将请求路由到相应的微服务实例。这种路由可以基于URI、请求头、请求参数等进行匹配和转发。
- 负载均衡(Load Balancing):网关服务可以实现负载均衡策略,将请求分发到多个微服务实例中,以保证系统的可伸缩性和可用性。它可以根据负载情况、服务健康状态等因素来动态地调整请求的分发策略。
- 安全(Security):网关服务通常负责保护微服务系统的安全性。它可以实现认证、授权、身份验证、访问控制等安全机制,以确保只有经过授权的用户或系统可以访问受保护的资源。
- 请求转换(Request Transformation):网关服务可以对请求进行转换和重写,使请求适应不同的微服务的接口规范。这种转换可以包括请求体的格式转换、请求参数的修改、请求头的添加等。
common文件夹
通常用于存放整个项目中通用的代码、配置、工具类等。
可能包含各种工具类(如日期处理、字符串处理)、通用配置文件(如日志配置、Spring配置)、常量定义、异常处理等。
而在common文件夹下包含下面常见的文件夹类型。
当然文件名的命名不是固定的,主要用于分类区分不同代码文件的作用。
- Domain 文件夹:
- 通常用于存放与业务领域相关的代码,例如实体类(Entity)、数据传输对象(DTO)、值对象(VO)等。
- 在 Domain 文件夹下,一般会有不同的子文件夹用于组织不同类型的类:
- DO (Data Object):通常指与数据库表对应的数据对象,包含数据库表的字段和相应的 getter/setter 方法。
- PO (Persistent Object):与 DO 类似,表示持久化对象,负责和数据库交互。
- VO (Value Object):通常用于传输数据给客户端或不同层之间的数据传递,与领域对象的状态无关。
- 这些类的作用是提供对数据的不同视图和操作,以支持数据在不同层(例如持久层、服务层、展示层)之间的传递和转换。
- Entity文件夹:
- 在某些项目中,可能会将实体类单独放置在entity文件夹中。这个文件夹和domain类似,也是用于存放实体类,但可能更倾向于将其用于存放一些非业务相关的实体类。
- Enums文件夹:
- 这个文件夹通常用于存放枚举类型。枚举类型在Java中常用于定义一组固定的常量,比如订单状态、用户角色等。
- Initial文件夹:
- 用于存放项目初始化相关的代码或配置文件。在项目启动时,可能需要进行一些初始化操作,比如加载配置、初始化数据库连接等。
- 在 Initial文件夹下,可能会有不同的子文件夹用于实现初始化操作:
- annotation: 用于存放自定义注解。
- aspect: 用于存放切面类。定义一些横切关注点,并在特定的连接点(如方法执行前、方法执行后)执行相关逻辑,比如日志记录、性能监控等。
- realize: 用于存放一些具体的实现类。
- Template文件夹:
- 这个文件夹通常用于存放模板文件。在一些Web项目中,可能会使用模板引擎来生成动态内容,这个文件夹可能包含HTML、CSS或其他模板文件。
- 其他:
- exception: 这个文件夹用于存放异常类。在JavaWeb项目中,异常处理是非常重要的一部分,通过将异常类放置在这个文件夹中,可以更好地组织和管理异常处理逻辑。
- helper: 这个文件夹通常用于存放一些工具类或辅助类。这些类可能包含一些通用的方法或函数,用于简化开发过程中的一些常见任务。
- groups: 这个文件夹可能用于存放权限相关的代码或配置。在许多Web项目中,需要对用户进行权限管理,这个文件夹可能包含用户组或角色的定义,以及与权限相关的代码。
- state: 这个文件夹可能用于存放状态相关的代码或配置。在一些项目中,会使用有限状态机等模式来管理对象的状态转换,这个文件夹可能包含与状态相关的代码或类。
server文件夹
主要用于实现系统中执行特定业务逻辑的组件或模块,它们承载了系统的核心功能。
一般用于业务逻辑执行,数据处理,事务管理,服务组合与调用,业务规则实施等操作。
- configuration文件夹:这个文件夹通常用于存放应用程序的配置类。在Spring框架中,我们可以使用@Configuration注解来标记配置类,这些配置类可以包含应用程序的Bean定义、组件扫描配置、数据库连接配置、缓存配置等。
- handler文件夹:用于存放请求处理器类。这些处理器类负责接收请求、执行相应的业务逻辑,并生成响应。比如说全局异常处理器等。
- service文件夹:通常用于存放服务层的代码。服务层负责执行系统的业务逻辑,处理业务规则、数据操作、事务管理等。服务层与数据访问层交互,执行数据操作并提供高级的业务功能给控制器或其他服务使用。
- controller文件夹:用于存放控制层的代码。负责接收来自客户端的请求,调用服务层的方法来执行业务逻辑,并生成相应的响应返回给客户端。
- mapper文件夹:通常用于存放数据访问层的代码。在一些基于MyBatis或其他ORM框架的项目中,我们会定义Mapper接口或XML文件来描述数据库操作。这些接口或XML文件负责定义数据库操作的SQL语句、参数映射、结果映射等。
- 其他:
- annotation:用于存放自定义注解,定义一些自定义注解来实现特定的功能或标记特定的类、方法或字段。
- aspect:用于存放切面类,负责横向地抽取应用程序中的关注点,比如日志记录、事务管理、权限控制等。
- task:可能用于存放定时任务相关的代码。在一些应用中,可能会需要执行定时任务来执行一些后台处理逻辑,比如数据清理、报表生成等。
- WebSocket,RabbitMQ,Redis等之类的相关文件。
尾声
下面可能会写一些单个服务具体的完成流程,以及第三方接口的调用步骤等更多涉及具体应用的操作。
但是由于具体的编程环境项目用途各不相同,而且当天完成后在第二天记录时难免存在遗忘,常常导致细节无法很好的记录。