当前位置: 首页 > article >正文

常见的 Spring 项目目录结构

在一个典型的 Spring 项目中,尤其是基于 Spring BootSpring MVC 的项目,会有一个清晰的目录结构来组织不同的功能模块。下面是一个常见的 Spring Boot 项目的文件结构,包含了大多数常用的目录和文件:

常见的 Spring 项目目录结构
my-spring-project
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── myspringproject
│   │   │               ├── config              # 配置类
│   │   │               ├── controller          # 控制器层 (Spring MVC)
│   │   │               ├── dao                 # 数据访问层 (DAO),(在 MyBatis 项目中,同Mapper 层 )
│   │   │               ├── dto                 # 数据传输对象 (DTO)
│   │   │               ├── exception           # 异常处理
│   │   │               ├── model)             # 实体类 (PO, VO)(Domain 、Entity)
│   │   │               ├── repository          # Spring Data JPA / MyBatis Repository
│   │   │               ├── service             # 服务层 (业务逻辑)
│   │   │               ├── util                # 工具类 (Utility classes)
│   │   │               └── MySpringProjectApplication.java  # 启动类
│   │   ├── resources
│   │   │   ├── application.properties  # 配置文件(application.yml)
│   │   │   ├── static                   # 静态资源(例如:JS, CSS, 图片等)
│   │   │   ├── templates                # 模板文件(例如:Thymeleaf, FreeMarker)
│   │   │   ├── db                        # 数据库相关脚本
│   │   │   └── application.yml          # 配置文件(备用形式)
│   ├── test
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── myspringproject
│   │   │               └── MySpringProjectApplicationTests.java  # 测试类
│   └── pom.xml (或 build.gradle)  # 项目的构建工具配置文件 (Maven 或 Gradle)
解释各个目录和文件的功能
1. src/main/java/com/example/myspringproject

这是项目的 Java 代码部分。

  • config:配置类,通常包括 @Configuration 注解的类,设置 Spring Boot 或 Spring MVC 的各种配置,如数据源、Security 配置等。

    • 示例:DataSourceConfig.javaSecurityConfig.java
  • controller:控制器层,包含处理 HTTP 请求的控制器类,使用 @RestController@Controller 注解,负责将请求映射到相应的服务。

    • 示例:UserController.javaOrderController.java
  • dao:数据访问对象层,通常与数据库交互的类,通常会使用 MyBatis 或 Spring Data JPA 来执行数据库操作。

    • 示例:UserDao.javaOrderDao.java
  • dto:数据传输对象,主要用于服务层与前端之间的数据传输。通常是简化的 PO(持久化对象)或者聚合多个模型的对象。

    • 示例:UserDTO.javaOrderDTO.java
  • exception:异常处理类,用于捕获并处理应用程序中的异常。可以使用 @ControllerAdvice@ExceptionHandler 来集中处理。

    • 示例:GlobalExceptionHandler.java
  • model:模型层,通常是实体类,代表数据库中的表。一般来说,这些类会被映射到数据库表(通过 JPA 或 MyBatis)。

    • 示例:User.javaOrder.java
  • repository:数据仓库层,Spring Data JPA 或 MyBatis 的接口通常放在这里。它与数据库表的交互通过 ORM 框架或 MyBatis Mapper 来实现。

    • 示例:UserRepository.javaOrderRepository.java
  • service:服务层,包含业务逻辑,通常调用 repository 层来执行 CRUD 操作,同时可以包含一些复杂的业务逻辑。

    • 示例:UserService.javaOrderService.java
  • util:工具类,包含一些通用的辅助方法或工具类(如日期处理、字符串处理等)。

    • 示例:DateUtils.javaStringUtils.java
  • MySpringProjectApplication.java:Spring Boot 启动类,包含 @SpringBootApplication 注解的类,是应用程序的入口点,通常包含 main 方法来启动 Spring Boot 应用。

2. src/main/resources

这是资源文件部分。

  • application.propertiesapplication.yml:配置文件,Spring Boot 项目的核心配置文件,定义数据库连接、端口号、日志、缓存等各种配置项。

    • 示例:

      server.port=8080
      spring.datasource.url=jdbc:mysql://localhost:3306/mydb
      spring.datasource.username=root
      spring.datasource.password=root
      
  • static:静态资源目录,用于存放前端的静态文件,如 CSS、JavaScript、图片等。这些文件通常不会经过服务器端处理,直接通过 HTTP 访问。

    • 示例:styles.cssscripts.js
  • templates:模板文件目录,通常用于存放视图模板文件,如 Thymeleaf 或 FreeMarker 模板。

    • 示例:index.htmllogin.html
  • db:数据库相关的脚本文件,通常用于存放初始化数据库的 SQL 脚本。

    • 示例:schema.sqldata.sql
3. src/test/java

这是项目的测试代码部分,使用 JUnit 或 TestNG 等框架进行单元测试和集成测试。

  • MySpringProjectApplicationTests.java:Spring Boot 应用程序的测试类,通常包含对启动类的基本测试,确保应用程序能正确启动。
  • 你可以在这个目录下添加其他测试类,如 UserServiceTest.java,用于测试服务层的业务逻辑。
4. 构建工具文件(pom.xmlbuild.gradle
  • pom.xml:Maven 构建工具的配置文件,定义了项目的依赖项、插件、构建目标等。

    • 示例:

      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-data-jpa</artifactId>
          </dependency>
      </dependencies>
      
  • build.gradle:Gradle 构建工具的配置文件,类似于 Maven 的 pom.xml,用于定义项目的依赖和构建任务。

小结

这是一个 Spring Boot 项目的典型文件结构,随着项目规模的增加,可能会根据需要进行扩展,例如引入新的模块(如消息队列模块、缓存模块等)。这个结构遵循了 分层架构 的设计原则,使得各层功能清晰,易于维护和扩展。


http://www.kler.cn/a/519869.html

相关文章:

  • 【模型】RNN模型详解
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.10 文本数据炼金术:从CSV到结构化数组
  • 【QT】 控件 -- 显示类
  • 82,【6】BUUCTF WEB .[CISCN2019 华东南赛区]Double Secret
  • 【精选】基于数据挖掘的招聘信息分析与市场需求预测系统 职位分析、求职者趋势分析 职位匹配、人才趋势、市场需求分析数据挖掘技术 职位需求分析、人才市场趋势预测
  • 使用 Docker 运行 Oracle Database 23ai Free 容器镜像并配置密码与数据持久化
  • 前端面试策略+项目梳理+项目经验阐述
  • Redis 消息队列详解
  • 亚博microros小车-原生ubuntu支持系列:12 URDF 模型
  • mysql如何修改密码
  • Unity开发一个单人FPS游戏的教程总结
  • 美创科技获浙江省网络空间安全协会年度表彰
  • Linux 中的poll、select和epoll有什么区别?
  • 【学习笔记】计算机网络(二)
  • 第29章 xUnit框架下的测试模式详解
  • 1、云计算
  • 什么是区块链
  • 单链表算法实战:解锁数据结构核心谜题——链表的回文结构
  • Leecode刷题C语言之完成所有交易的初始最少钱数
  • Rust 中的结构体使用指南
  • 積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程
  • 【矩阵二分】力扣378. 有序矩阵中第 K 小的元素
  • 10 Hyperledger Fabric 介绍
  • 个性化的语言模型构建思路
  • 洛谷 P5709:Apples Prologue / 苹果和虫子
  • 2025年前端技术革新趋势