Springboot3+JDK17搭建后端资料详解
概述
本文详细介绍了如何使用Spring Boot 3和JDK 17搭建后端项目,涵盖环境准备、项目创建、基本配置、开发RESTful API和数据库集成的全过程。从下载安装JDK 17和Spring Boot 3开始,逐步引导读者完成项目搭建,确保每个步骤都清晰明了。此外,还介绍了如何运行和部署Spring Boot应用,帮助读者顺利完成后端开发任务。
环境准备在开始搭建Spring Boot 3 + JDK 17后端项目之前,需要准备开发环境。这包括下载并安装JDK 17和Spring Boot 3。
下载并安装JDK 17
- 访问JDK官方网站,下载JDK 17版本。
- 安装JDK 17,确保安装过程中设置环境变量。
- 验证JDK安装成功,可以通过命令行输入
java -version
来检查JDK版本。
下载并安装Spring Boot 3
- 访问Spring Boot官方网站,下载Spring Boot 3的最新版本。
- 解压下载的压缩包,获取Spring Boot CLI工具。
- 将Spring Boot CLI工具添加到系统环境变量中,以便在命令行中使用。
- 验证安装成功,可以通过命令行输入
spring --version
来检查Spring Boot CLI版本。
在准备好开发环境后,下一步是创建一个新的Spring Boot项目。
使用Spring Initializr创建新项目
- 访问Spring Initializr网站(https://start.spring.io/)。
- 在网站上选择项目的基本信息,例如项目类型、语言、依赖等。确保选择
Java
和Maven
作为构建工具,选择Java 17
作为Java版本。 - 选择需要的依赖,如
Spring Web
、Spring Data JPA
和Spring DevTools
。 - 点击
Generate
按钮,下载生成的项目压缩包。 - 解压压缩包,得到项目文件夹。
导入项目到IDE中
- 打开IDE(如IntelliJ IDEA或Eclipse)。
- 导入解压后的项目文件夹,确保项目设置为Maven项目。
- 在IDE中,右键点击
pom.xml
文件,选择Maven
->Reload Project
来刷新项目依赖。 - 验证项目结构是否正确,检查
src/main/java
和src/main/resources
目录是否存在。
接下来,设置项目的基本配置,包括应用端口和数据源。
设置应用端口
- 打开
src/main/resources/application.properties
文件。 - 添加以下配置来设置应用端口:
server.port=8080
配置数据源
- 在
application.properties
文件中添加数据库连接配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
开发第一个RESTful API
接下来,将创建一个简单的RESTful API,包括实体类、服务类和控制器类。
创建实体类
- 在
src/main/java/com/example/demo
目录下创建一个新的包model
。 - 在
model
包下创建一个名为User.java
的实体类:
package com.example.demo.model;
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
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
创建服务和控制器
- 在
src/main/java/com/example/demo
目录下创建一个新的包service
。 - 在
service
包下创建一个名为UserService.java
的服务类:
package com.example.demo.service;
import com.example.demo.model.User;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class UserService {
private List<User> users = new ArrayList<>();
public List<User> getAllUsers() {
return users;
}
public User getUserById(Long id) {
return users.stream().filter(user -> user.getId().equals(id)).findFirst().orElse(null);
}
public User addUser(User user) {
user.setId(users.size() + 1L);
users.add(user);
return user;
}
public User updateUser(Long id, User user) {
User existingUser = getUserById(id);
if (existingUser != null) {
existingUser.setName(user.getName());
existingUser.setEmail(user.getEmail());
}
return existingUser;
}
public boolean deleteUser(Long id) {
User user = getUserById(id);
return users.remove(user);
}
}
- 在
src/main/java/com/example/demo
目录下创建一个新的包controller
。 - 在
controller
包下创建一个名为UserController.java
的控制器类:
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
@PostMapping
public User addUser(@RequestBody User user) {
return userService.addUser(user);
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userService.updateUser(id, user);
}
@DeleteMapping("/{id}")
public boolean deleteUser(@PathVariable Long id) {
return userService.deleteUser(id);
}
}
测试API
- 启动Spring Boot应用。
- 使用Postman或curl工具测试API。例如,使用curl测试添加用户:
curl -X POST http://localhost:8080/users -H "Content-Type: application/json" -d '{"name":"John Doe", "email":"john.doe@example.com"}'
数据库集成
接下来,将配置数据库连接,并使用JPA进行数据操作。
连接数据库
- 在
application.properties
文件中配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
- 配置实体类的JPA注解:
package com.example.demo.model;
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
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
使用JPA进行数据操作
- 创建一个新的服务类来操作数据库:
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class UserServiceJPA {
@Autowired
private UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
public User addUser(User user) {
return userRepository.save(user);
}
public User updateUser(Long id, User user) {
User existingUser = userRepository.findById(id).orElse(null);
if (existingUser != null) {
existingUser.setName(user.getName());
existingUser.setEmail(user.getEmail());
return userRepository.save(existingUser);
}
return null;
}
public boolean deleteUser(Long id) {
userRepository.deleteById(id);
return true;
}
}
- 创建一个新的接口(Repository)来定义JPA操作:
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
- 在控制器中使用新的Service:
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserServiceJPA;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserServiceJPA userServiceJPA;
@GetMapping
public List<User> getAllUsers() {
return userServiceJPA.getAllUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userServiceJPA.getUserById(id);
}
@PostMapping
public User addUser(@RequestBody User user) {
return userServiceJPA.addUser(user);
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userServiceJPA.updateUser(id, user);
}
@DeleteMapping("/{id}")
public boolean deleteUser(@PathVariable Long id) {
return userServiceJPA.deleteUser(id);
}
}
运行和部署
最后,将开始运行和部署Spring Boot应用。
启动应用
-
在IDE中运行
DemoApplication
类的主方法,或者使用命令行运行mvn spring-boot:run
。 - 打开浏览器,访问
http://localhost:8080/users
,查看API接口是否正常运行。
打包并部署应用
- 打包应用,执行以下命令:
mvn clean package
-
打包完成后,在
target
目录下生成了demo-0.0.1-SNAPSHOT.jar
文件。 - 使用命令行运行生成的JAR文件:
java -jar target/demo-0.0.1-SNAPSHOT.jar
- 将应用部署到服务器,可以通过Docker容器化部署或者直接上传到服务器运行。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦