常见的 Spring 项目目录结构

在一个典型的 Spring 项目中,尤其是基于 Spring Boot 或 Spring 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.java、SecurityConfig.java
  • controller :控制器层,包含处理 HTTP 请求的控制器类,使用 @RestController 或 @Controller 注解,负责将请求映射到相应的服务。

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

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

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

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

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

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

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

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

2. src/main/resources

这是资源文件部分。

  • application.properties 或 application.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.css、scripts.js
  • templates:模板文件目录,通常用于存放视图模板文件,如 Thymeleaf 或 FreeMarker 模板。

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

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

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

  • MySpringProjectApplicationTests.java:Spring Boot 应用程序的测试类,通常包含对启动类的基本测试,确保应用程序能正确启动。
  • 你可以在这个目录下添加其他测试类,如 UserServiceTest.java,用于测试服务层的业务逻辑。
4. 构建工具文件(pom.xml 或 build.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 项目的典型文件结构,随着项目规模的增加,可能会根据需要进行扩展,例如引入新的模块(如消息队列模块、缓存模块等)。这个结构遵循了 分层架构 的设计原则,使得各层功能清晰,易于维护和扩展。

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖3 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时3 天前
01-06-A-JVM排查实战详解
java·jvm