SpringBoot3+JDK17搭建后端入门教程
本文将详细介绍如何使用Spring Boot 3和JDK 17搭建后端入门项目,涵盖开发环境搭建、项目创建、数据库集成及测试部署等步骤。通过本文,读者可以快速上手Spring Boot 3和JDK 17的开发,从基础到实践,一步步深入理解这些技术的应用。
SpringBoot3和JDK17简介 什么是SpringBoot3Spring Boot 是基于Spring框架的一个轻量级框架,旨在简化Spring应用的配置和开发过程。Spring Boot 3 是Spring Boot的最新版本,提供了许多新的特性和改进,如支持Java 17、增强的日志功能、改进的开发体验等。
Spring Boot 3 的主要特性包括:
- Java 17 支持:Spring Boot 3 支持Java 17,允许开发者使用最新的Java功能。
- 增强的日志功能:提供了更灵活的日志配置选项,更好地满足开发需求。
- 改进的开发体验:提升了开发者工具,优化了开发体验。
- 内置Web服务器:支持嵌入式的Tomcat、Jetty或Undertow等Web服务器,简化部署过程。
- 零配置启动:大多数情况下,开发者不需要编写任何XML或配置代码即可启动应用。
JDK 17 是Java SE 17的简称,是Oracle公司发布的Java开发工具包。JDK 17 是长期支持版本(LTS),将得到长期的技术支持和维护。JDK 17 引入了多项新特性和改进,包括:
- Switch表达式:允许使用switch语句匹配枚举、字符串或数字。
- 密封类:允许对类和接口进行访问控制,以限制访问权限。
- 文本块:允许定义多行字符串字面量,解决多行字符串拼接问题。
- 记录类:一种新的类类型,用于表示不可变的数据载体。
- 模式匹配:允许在模式匹配中使用类型检查。
- 增强的异常处理:改进了异常处理机制,提高了代码的健壮性。
- 性能提升:JDK 17 引入了ZGC(Z Garbage Collector)和Shenandoah GC等新的垃圾回收器,提高了应用的性能。
- 开发效率:Spring Boot 3 提供了自动化配置和内置的开发工具,大大提高了开发效率。
- 安全性:Spring Boot 3 和JDK 17 增强了安全特性,如加密支持、安全配置等。
- 兼容性:Spring Boot 3 支持Java 17,确保了代码的兼容性和可维护性。
- 访问Oracle官网下载JDK 17:https://www.oracle.com/java/technologies/javase/jdk17-downloads.html
- 按照安装向导安装JDK 17。
- 配置环境变量:
export JAVA_HOME=/path/to/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
- 验证安装:
java -version
输出结果应包含17
字样。
IntelliJ IDEA
- 访问IntelliJ IDEA官网下载页面:https://www.jetbrains.com/idea/download/
- 按照安装向导完成安装。
- 配置IDEA:
# 打开IntelliJ IDEA
# 进入Preferences -> Build,Execution,Deployment -> Compiler
# 设置Java版本为17
Eclipse
- 访问Eclipse官网下载页面:https://www.eclipse.org/downloads/
- 按照安装向导完成安装。
- 配置Eclipse:
# 打开Eclipse
# 进入Window -> Preferences
# 找到Java -> Installed JREs -> Edit
# 添加Java 17的路径
创建SpringBoot3项目
使用Spring Initializr创建项目
- 访问Spring Initializr官网:https://start.spring.io/
- 选择项目信息:
- Project:Maven Project
- Language:Java
- Spring Boot:3.0.0
- Dependencies:选择需要的依赖,如Web、JPA等。
- 下载并解压项目:
# 解压文件
unzip project.zip -d /path/to/unzip
- 导入IDE中:在IDE中导入解压后的项目。
手动创建项目
- 创建Maven项目:
- 在IDE中创建新Maven项目。
- 在
pom.xml
中添加Spring Boot 3的依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 创建主类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 运行项目:在IDE中运行主类,启动应用。
一个Spring Boot项目的基本结构如下:
src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── myapp
│ │ ├── Application.java
│ │ └── controller
│ │ └── HelloController.java
│ └── resources
│ └── application.properties
└── test
└── java
└── com
└── example
└── myapp
└── ApplicationTests.java
主类
主类是Spring Boot项目的入口点,使用@SpringBootApplication
注解。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
控制器
控制器是处理HTTP请求的组件,使用@RestController
注解。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
配置文件
资源文件夹中的application.properties
用于配置应用属性。
# application.properties
server.port=8080
创建第一个Controller
控制器用于处理HTTP请求。使用@RestController
注解标记控制器类。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
测试应用
运行主类启动应用,访问http://localhost:8080/hello
,应该能看到Hello, World!
。
@RestController
@RestController
注解用于标记控制器类,表明该类是REST风格的控制器。
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
// Controller methods
}
@RequestMapping
@RequestMapping
注解用于映射Web请求到控制器类或方法。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
@Service和@Repository
@Service
@Service
注解用于标记服务层类,表示该类是一个服务组件。
import org.springframework.stereotype.Service;
@Service
public class UserService {
// Service methods
}
@Repository
@Repository
注解用于标记数据访问层类,表示该类是一个数据访问组件。
import org.springframework.stereotype.Repository;
@Repository
public class UserRepository {
// Repository methods
}
@Autowired和@Value
@Autowired
@Autowired
注解用于自动装配依赖,实现依赖注入。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
// Service methods
}
@Value
@Value
注解用于注入属性值。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class ConfigService {
@Value("${app.name}")
private String appName;
// Service methods
}
数据库集成
使用SpringBoot集成MySQL
添加依赖
在pom.xml
中添加MySQL和Spring Data JPA的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
配置数据库连接
在application.properties
中配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
创建实体类
创建实体类,使用@Entity
注解标记实体类:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getters and Setters
}
创建Repository接口
创建Repository接口,继承JpaRepository
:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// Custom query methods
}
创建Service层逻辑
创建Service类,实现业务逻辑:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public List<User> findAll() {
return userRepository.findAll();
}
public User save(User user) {
return userRepository.save(user);
}
}
创建Controller
创建控制器,处理HTTP请求:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> getAllUsers() {
return userService.findAll();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}
查询示例
查询所有用户:
@GetMapping
public List<User> getAllUsers() {
return userService.findAll();
}
创建新用户:
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
测试和部署
单元测试
编写单元测试,确保代码正确:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testFindAll() {
List<User> users = userService.findAll();
assertEquals(0, users.size());
}
@Test
public void testSave() {
User user = new User();
user.setName("Test");
user.setEmail("test@example.com");
User savedUser = userService.save(user);
assertEquals("Test", savedUser.getName());
}
}
打包和部署
打包应用
使用Maven或Gradle打包应用:
mvn clean package
生成的jar文件在target
目录下。
部署应用
将生成的jar文件部署到服务器,运行应用:
java -jar target/myapp.jar
总结
本文介绍了如何使用Spring Boot 3和JDK 17搭建后端应用。通过详细的步骤,我们学习了搭建开发环境、创建第一个项目、集成数据库、进行测试和部署。更多信息可以参考Spring Boot官方文档。
共同学习,写下你的评论
评论加载中...
作者其他优质文章