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

相关推荐
计算机-秋大田2 小时前
基于Spring Boot的乡村养老服务管理系统设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·课程设计
盖盖衍上2 小时前
Java 泛型(Generics)详解与使用
java·开发语言·windows
没有十八岁3 小时前
云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之新能源充电行业系统说明书
java·数据库·spring·汽车
小萌新上大分3 小时前
Minio搭建并在SpringBoot中使用完成用户头像的上传
java·spring boot·后端·minio·minio搭建·头像上传·minio入门
B站计算机毕业设计超人4 小时前
计算机毕业设计SpringBoot+Vue.js校园失物招领系统(源码+文档+PPT+讲解)
java·vue.js·spring boot·后端·毕业设计·课程设计·毕设
计算机-秋大田4 小时前
基于SpringBoot的环保网站的设计与实现(源码+SQL脚本+LW+部署讲解等)
java·vue.js·spring boot·后端·课程设计
汤姆yu4 小时前
基于springboot的高校物品捐赠系统
java·spring boot·后端·高校物品捐赠
magic 2454 小时前
深入理解Java网络编程:从基础到高级应用
java·开发语言
岁岁岁平安4 小时前
spring注解开发(Spring整合JUnit+MyBatis)(7)
java·spring·junit·log4j·mybatis
大地爱4 小时前
如何使用Spring Boot框架整合Redis:超详细案例教程
spring boot·redis·后端