Spring Boot 文件夹结构入门指南

引言

Spring Boot 是一个用于简化 Java 应用开发的框架,采用了约定优于配置的理念,能够快速建立起一个基于 Spring 的应用。在开始开发之前,正确的文件夹结构是至关重要的。本文将为刚入行的小白详细介绍如何构建一个标准的 Spring Boot 文件夹结构,包括每一步的具体操作及相关代码。

整体流程

为了清晰地指导你构建 Spring Boot 项目,下面的表格展示了整个流程:

步骤 描述
步骤1 创建项目并导入依赖
步骤2 创建主应用程序类 (Main Application)
步骤3 创建控制器 (Controller)
步骤4 创建服务层 (Service)
步骤5 创建数据访问层 (Repository)
步骤6 创建实体类 (Entity)
步骤7 创建配置文件 (Application Properties)

逐步详解

步骤1: 创建项目并导入依赖

使用 Spring Initializr 创建一个新的 Spring Boot 项目(

  • 项目: Maven Project
  • 语言: Java
  • Spring Boot: 选择版本(例如 2.5.x)
  • 项目元数据: 包名(如 com.example.demo
  • 依赖: Spring Web、Spring Data JPA、H2 Database(根据需要选择)

创建后,将生成一个包含基本结构的项目。

步骤2: 创建主应用程序类

创建项目后,项目目录结构中会有一个默认的主应用程序类,通常在 src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // 这是一个组合注解,表示这是一个 Spring Boot 应用程序
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args); // 启动 Spring 应用
    }
}

步骤3: 创建控制器 (Controller)

控制器用于处理 HTTP 请求。新建一个 Controller 包,并添加一个示例控制器 HelloController.java

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // 表示这是一个控制器,处理 REST 请求
public class HelloController {
    
    @GetMapping("/hello") // 定义一个 GET 请求的处理
    public String sayHello() {
        return "Hello, World!"; // 返回一个字符串
    }
}

步骤4: 创建服务层 (Service)

服务层用于封装业务逻辑。新建一个 Service 包,并添加一个示例服务 HelloService.java

package com.example.demo.service;

import org.springframework.stereotype.Service;

@Service // 将此类标记为服务组件
public class HelloService {

    public String getGreeting() {
        return "Hello from the Service!"; // 返回问候语
    }
}

步骤5: 创建数据访问层 (Repository)

数据访问层负责与数据库交互。新建一个 Repository 包,并创建一个示例接口 UserRepository.java

package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> { // JpaRepository 提供基础 CRUD 操作
    // 这里可以定义更多的数据查询方法
}

步骤6: 创建实体类 (Entity)

实体类是数据库表与 Java 对象之间的映射。新建一个 Entity 包,并创建一实体 User.java

package com.example.demo.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity // 表示这是一个 JPA 实体
public class User {

    @Id // 标记主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 自增策略
    private Long id;

    private String name;

    // Getter 和 Setter 方法
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

步骤7: 创建配置文件 (Application Properties)

src/main/resources/application.properties 文件中,可以配置数据库连接等信息:

# 数据库配置
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true

# JPA 配置
spring.jpa.hibernate.ddl-auto=create  // 在每次启动时重建数据库
spring.jpa.show-sql=true // 显示 SQL 语句

文件夹结构示例

通过以上步骤,项目的基本文件夹结构如下所示:

demo
│
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── DemoApplication.java
│   │   │               ├── controller
│   │   │               │    └── HelloController.java
│   │   │               ├── service
│   │   │               │    └── HelloService.java
│   │   │               ├── repository
│   │   │               │    └── UserRepository.java
│   │   │               └── entity
│   │   │                   └── User.java
│   │   └── resources
│   │       └── application.properties
│   └── test
└── pom.xml

关系图

下面是文件夹结构中各部分之间的关系图。

erDiagram
    USER {
        Long id
        String name
    }
    HELLO_SERVICE {
        String getGreeting()
    }
    HELLO_CONTROLLER {
        String sayHello()
    }
    
    HELLO_CONTROLLER --> HELLO_SERVICE : uses
    USER <-- HELLO_SERVICE : interacts

结尾

通过以上步骤与代码示例,我们详细介绍了如何构建一个标准的 Spring Boot 文件夹结构。每一步都是为了确保我们构建出一个可维护且功能完整的应用。希望这篇文章能够帮助你在 Spring Boot 开发的旅程中顺利起步,随着经验的积累,你也会逐渐熟悉和掌握更复杂的结构和功能。继续加油,期待你能开发出更多有趣的项目!