为了账号安全,请及时绑定邮箱和手机立即绑定

Springboot3+JDK17搭建后端项目实战教程

标签:
Java SpringBoot
概述

本文介绍了如何使用Spring Boot 3和JDK 17搭建后端项目,包括环境搭建、依赖配置以及基本开发流程,并详细解释了Spring Boot 3的核心特性和JDK 17的新特性,帮助读者快速上手开发。通过实际案例,展示了Controller、Service、Repository等组件的创建和简单的增删改查功能实现。

Spring Boot 3 和 JDK 17 搭建后端项目实战教程
1. SpringBoot3 和 JDK17 简介

1.1 SpringBoot3 的核心特性介绍

Spring Boot 3 是 Spring Boot 的最新版本,它保持了 Spring Boot 的核心特性,包括自动配置、开箱即用、无需 XML 配置等。Spring Boot 3 的主要特性包括:

  • 自动配置:Spring Boot 通过自动配置机制简化了应用的配置过程。用户只需要引入必要的依赖,Spring Boot 会自动配置应用。
  • 开箱即用:Spring Boot 的应用可以快速启动并运行,无需复杂的配置。
  • 内嵌式容器:Spring Boot 提供了内嵌的 Web 服务器(如 Tomcat、Jetty、Undertow),可以将应用打包为独立的可执行文件。
  • Actuator:Spring Boot Actuator 提供了一系列的端点,可以方便地监控和管理应用。
  • Spring Initializr:Spring Initializr 是一个在线工具,用于生成 Spring Boot 项目的骨架代码。
  • 健康检查:通过 Actuator 的 health 端点可以检查应用的健康状态。
  • 配置文件:支持使用 application.propertiesapplication.yml 文件来配置应用。
  • Spring Boot Starter:提供了多种 Starter,简化了依赖管理。
  • 配置文件简化:自动加载 application.propertiesapplication.yml 文件,并简化了配置文件的写法。

1.2 JDK17 的新特性和改进

JDK 17 是 Java 的长期支持(LTS)版本,它引入了一些新特性和改进,包括:

  • Sealed Classes:允许类声明密封,限制其他类继承该类。
  • Pattern Matching for instanceof:改进了 instanceof 的使用,允许在模式匹配中使用变量。
  • Text Blocks:引入了文本块,简化了多行字符串的处理。
  • Record Classes:提供了新的 record 类型,用于创建不可修改的数据载体。
  • Enhanced Patter Matching:改进了模式匹配支持。
  • Switch Expressions:引入了新的 switch 表达式,以增强 switch 语句的功能。
  • Pattern Syntax:改进了正则表达式的语法。
  • Deprecation of the NIO File API:弃用了部分 NIO 文件 API,推荐使用新的 java.nio.file
  • Improvements in the VM and Garbage Collection:改进了 JVM 和垃圾收集器。
2. 开发环境搭建

2.1 下载并安装 JDK17

下载并安装 JDK 17 的步骤如下:

  1. 访问 Oracle 官方网站:https://www.oracle.com/java/technologies/javase/jdk17-downloads.html
  2. 选择适用于你的操作系统的版本进行下载。
  3. 按照安装向导进行安装。

安装完成后,可以通过命令行验证 JDK 是否安装成功:

java -version

输出结果应包含 java version "17"

2.2 下载并安装 IDE(如 IntelliJ IDEA 或 Eclipse)

IntelliJ IDEA

  1. 访问 IntelliJ IDEA 官方网站:https://www.jetbrains.com/idea/
  2. 下载并安装 IntelliJ IDEA。
  3. 启动 IntelliJ IDEA 并选择 "Import Project"。
  4. 导入已创建的 Spring Boot 项目。

Eclipse

  1. 访问 Eclipse 官方网站:https://www.eclipse.org/downloads/
  2. 下载并安装 Eclipse。
  3. 启动 Eclipse 并选择 "File -> Import..."。
  4. 导入已创建的 Spring Boot 项目。

2.3 添加 SpringBoot3 的开发依赖

在 IntelliJ IDEA 或 Eclipse 中,可以通过 Maven 或 Gradle 添加 Spring Boot 3 的开发依赖。

Maven

pom.xml 文件中添加以下依赖:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>3.0.0</version>
    </dependency>

    <!-- MyBatis Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
        <scope>provided</scope>
    </dependency>

    <!-- Spring Boot Starter Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<!-- Spring Boot Parent POM -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.0</version>
</parent>

Gradle

build.gradle 文件中添加以下依赖:

dependencies {
    // Spring Boot Starter Web
    implementation 'org.springframework.boot:spring-boot-starter-web:3.0.0'

    // MyBatis Starter
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'

    // Lombok
    compileOnly 'org.projectlombok:lombok:1.18.20'

    // Spring Boot Starter Test
    testImplementation 'org.springframework.boot:spring-boot-starter-test:3.0.0'
}
3. 创建 SpringBoot 项目

3.1 使用 Spring Initializr 创建新项目

  1. 访问 Spring Initializr 网站:https://start.spring.io/
  2. 选择项目信息(技术选 Spring Boot 3.0.0 版本,语言选 Java 17)。
  3. 选择依赖(如 Web、MyBatis、Lombok)。
  4. 点击 "Generate" 下载项目压缩包。
  5. 解压缩下载的项目,并导入到 IDE 中。

3.2 添加必要的依赖

pom.xml 文件中,添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

build.gradle 文件中,添加以下依赖:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
    compileOnly 'org.projectlombok:lombok:1.18.20'
    testImplementation 'org.springframework.boot:spring-boot-starter-test:3.0.0'
}
4. 项目基本配置

4.1 配置 application.properties 或 application.yml 文件

src/main/resources 目录下创建 application.yml 文件,配置应用的基本信息:

spring:
  application:
    name: my-spring-boot-app
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
server:
  port: 8080

4.2 设置端口号、数据库连接等基本信息

application.yml 文件中,设置应用的端口号和数据库连接信息:

spring:
  application:
    name: my-spring-boot-app
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
server:
  port: 8080
5. 实战开发

5.1 创建 Controller、Service、Repository 等项目组件

Controller

创建一个简单的 UserController 类:

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

@RestController
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/users")
    public String getUsers() {
        return userService.getUsers();
    }

    @PostMapping("/users")
    public String saveUser(@RequestParam String name) {
        return userService.saveUser(name);
    }
}

Service

创建一个 UserService 类:

import org.springframework.stereotype.Service;

@Service
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public String getUsers() {
        return userRepository.getUsers();
    }

    public String saveUser(String name) {
        return userRepository.saveUser(name);
    }
}

Repository

创建一个 UserRepository 接口:

import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository {

    String getUsers();

    String saveUser(String name);
}

实现 Repository

创建一个 UserRepositoryImpl 类实现 UserRepository 接口:

import org.springframework.stereotype.Repository;

@Repository
public class UserRepositoryImpl implements UserRepository {

    @Override
    public String getUsers() {
        return "Hello, this is a user repository.";
    }

    @Override
    public String saveUser(String name) {
        return "User " + name + " saved successfully.";
    }
}

5.2 编写简单的增删改查功能

Controller 示例

添加一个 saveUser 方法到 UserController,用于添加用户:

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

@RestController
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/users")
    public String getUsers() {
        return userService.getUsers();
    }

    @PostMapping("/users")
    public String saveUser(@RequestParam String name) {
        return userService.saveUser(name);
    }
}

Service 示例

添加 saveUser 方法到 UserService

import org.springframework.stereotype.Service;

@Service
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public String getUsers() {
        return userRepository.getUsers();
    }

    public String saveUser(String name) {
        return userRepository.saveUser(name);
    }
}

Repository 示例

修改 UserRepository 接口和实现类:

import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository {

    String getUsers();

    String saveUser(String name);
}
import org.springframework.stereotype.Repository;

@Repository
public class UserRepositoryImpl implements UserRepository {

    @Override
    public String getUsers() {
        return "Hello, this is a user repository.";
    }

    @Override
    public String saveUser(String name) {
        return "User " + name + " saved successfully.";
    }
}
6. 运行与调试

6.1 启动 SpringBoot 项目

使用 IDE 启动 Spring Boot 应用,或者在命令行中运行:

mvn spring-boot:run

6.2 调试项目中的常见问题

端口冲突

如果启动时出现端口冲突的错误,可以在 application.yml 文件中更改端口号:

server:
  port: 8081

依赖问题

如果启动时出现依赖问题,检查 pom.xmlbuild.gradle 文件中的依赖是否正确配置。

数据库连接问题

如果数据库连接失败,检查 application.yml 文件中的数据库配置是否正确:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

控制器问题

如果控制器无法访问,检查控制器是否正确配置为 REST 控制器,并确保路径正确:

@RestController
public class UserController {

    @GetMapping("/users")
    public String getUsers() {
        return "Hello, this is a user list.";
    }
}

通过以上步骤,你可以成功搭建并运行一个基于 Spring Boot 3 和 JDK 17 的后端项目。通过这个教程,你应该能够理解 Spring Boot 3 的核心特性、JDK 17 的新特性和改进,以及如何搭建和调试一个 Spring Boot 项目。后续你还可以进一步扩展项目功能,例如集成更多的框架和库,或者进行更复杂的业务逻辑开发。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消