Springboot3+JDK17搭建后端项目实战教程
本文介绍了如何使用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.properties
或application.yml
文件来配置应用。 - Spring Boot Starter:提供了多种 Starter,简化了依赖管理。
- 配置文件简化:自动加载
application.properties
或application.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.1 下载并安装 JDK17
下载并安装 JDK 17 的步骤如下:
- 访问 Oracle 官方网站:https://www.oracle.com/java/technologies/javase/jdk17-downloads.html
- 选择适用于你的操作系统的版本进行下载。
- 按照安装向导进行安装。
安装完成后,可以通过命令行验证 JDK 是否安装成功:
java -version
输出结果应包含 java version "17"
。
2.2 下载并安装 IDE(如 IntelliJ IDEA 或 Eclipse)
IntelliJ IDEA
- 访问 IntelliJ IDEA 官方网站:https://www.jetbrains.com/idea/
- 下载并安装 IntelliJ IDEA。
- 启动 IntelliJ IDEA 并选择 "Import Project"。
- 导入已创建的 Spring Boot 项目。
Eclipse
- 访问 Eclipse 官方网站:https://www.eclipse.org/downloads/
- 下载并安装 Eclipse。
- 启动 Eclipse 并选择 "File -> Import..."。
- 导入已创建的 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 创建新项目
- 访问 Spring Initializr 网站:https://start.spring.io/
- 选择项目信息(技术选 Spring Boot 3.0.0 版本,语言选 Java 17)。
- 选择依赖(如 Web、MyBatis、Lombok)。
- 点击 "Generate" 下载项目压缩包。
- 解压缩下载的项目,并导入到 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.xml
或 build.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 项目。后续你还可以进一步扩展项目功能,例如集成更多的框架和库,或者进行更复杂的业务逻辑开发。
共同学习,写下你的评论
评论加载中...
作者其他优质文章