Springboot3+JDK17搭建后端教程:入门级详解
本文详细介绍了如何从零开始搭建开发环境,包括JDK17的安装与配置,以及Spring Boot 3项目的创建与配置。文章还涵盖了开发工具的选择与安装,以及项目结构的解析。通过这些步骤,读者可以轻松构建并运行一个基本的Spring Boot应用。
开发环境搭建 JDK 17 安装与配置安装 JDK 17
首先,访问Oracle官方网站或Adoptium项目获取并下载JDK 17的安装包。安装过程因操作系统不同而略有差异。
Windows 安装步骤
- 下载JDK 17 Windows版本的安装包。
- 双击安装包,按照向导进行安装。
- 在安装过程中,确保勾选“Set JAVA_HOME”选项,以便设置环境变量。
- 点击“Finish”完成安装。
Mac OS 安装步骤
-
使用Homebrew安装JDK 17:
brew tap adoptopenjdk/openjdk brew install adoptopenjdk17
- 通过Adoptium项目下载和安装JDK 17。
Linux 安装步骤
-
使用包管理器(如apt、yum)安装JDK 17:
sudo apt-get update sudo apt-get install openjdk-17-jdk
- 通过Adoptium项目下载并安装JDK 17。
配置环境变量
安装完成后,需要配置环境变量以确保Java能够被系统识别。
Windows
- 打开“系统属性”>“高级系统设置”>“环境变量”。
- 在“系统变量”区域中找到
Path
变量,点击“编辑”。 - 点击“新建”,输入JDK的
bin
目录路径,如C:\Program Files\Java\jdk-17\bin
。 - 点击“确定”保存设置。
Mac OS/Linux
编辑~/.bashrc
或~/.zshrc
文件,添加如下内容:
export JAVA_HOME=/path/to/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
重启终端或运行source ~/.bashrc
或source ~/.zshrc
使配置生效。
验证安装
在命令行中输入以下命令,验证JDK 17是否安装成功:
java -version
输出应包含版本信息,例如:
java version "17" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17+35-LTS-2724)
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)
Spring Boot 3 安装与配置
安装 Spring Boot 3
Spring Boot 3可以通过使用Spring Initializr在线工具创建项目,也可以使用Maven或Gradle依赖管理工具。
使用 Spring Initializr 创建新项目
- 访问 Spring Initializr 网站。
- 选择项目类型为Maven项目(或Gradle项目)。
- 输入项目基本信息,如组(Group)和名(Artifact)。
- 选择Spring Boot 3版本。
- 添加所需依赖,如Web、Thymeleaf、Reactive等。
- 点击“Generate”生成项目文件。
手动配置 Maven 或 Gradle
在pom.xml
或build.gradle
文件中添加Spring Boot 3的依赖。
pom.xml
示例
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
build.gradle
示例
plugins {
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// 添加其他依赖
}
配置 Spring Boot 3
确保项目结构和配置文件正确无误。
application.properties
示例
server.port=8080
spring.application.name=demo-app
application.yml
示例
server:
port: 8080
spring:
application:
name: demo-app
开发工具选择与安装
IntelliJ IDEA 安装
- 访问 IntelliJ IDEA 官网下载并安装最新版本。
- 选择适合的版本,社区版或专业版。
- 安装完成后,打开 IntelliJ IDEA。
- 创建新的 Spring Boot 项目,选择之前通过 Spring Initializr 生成的项目文件夹。
- 在项目视图中,可以看到项目结构和依赖管理。
项目结构解析
一个典型的 Spring Boot 项目结构如下:
src
├── main
│ ├── java
│ │ └── com.example.demo
│ │ └── DemoApplication.java
│ │ └── controller
│ │ └── HelloController.java
│ ├── resources
│ │ └── application.properties
│ └── web
│ └── static
│ └── templates
└── test
└── java
└── com.example.demo
└── DemoApplicationTests.java
添加依赖管理
在 Maven 或 Gradle 项目中,确保依赖管理文件正确配置。
Maven pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加其他依赖 -->
</dependencies>
Gradle build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// 添加其他依赖
}
创建 Spring Boot 项目
使用 Spring Initializr 创建项目
创建新项目
访问 Spring Initializr 网站,选择项目类型和版本,添加所需依赖,如Web、Thymeleaf,生成项目。
解析项目结构
生成的项目结构如下:
src
├── main
│ ├── java
│ │ └── com.example.demo
│ │ └── DemoApplication.java
│ │ └── controller
│ │ └── HelloController.java
│ ├── resources
│ │ └── application.properties
│ └── web
│ └── static
│ └── templates
└── test
└── java
└── com.example.demo
└── DemoApplicationTests.java
添加依赖管理
在项目中添加所需的依赖,如Web、JPA、Thymeleaf等。
Maven pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
Gradle build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}
项目结构解析
目录结构
src/main/java
: 项目的主要Java文件夹,包含应用程序的主类和控制器。src/main/resources
: 配置文件和静态资源文件的存放位置。src/test/java
: 项目测试代码所在位置。
处理文件
DemoApplication.java
: 项目入口类,包含主方法。HelloController.java
: 示例控制器类。application.properties
: 项目配置文件。index.html
: 静态资源文件。
示例代码
DemoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
HelloController.java
package com.example.demo.controller;
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
server.port=8080
spring.application.name=demo-app
处理路径参数与查询参数
使用 @PathVariable
和 @RequestParam
注解处理路径参数和查询参数。
UserController.java
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user/{id}")
public String getUser(@PathVariable String id) {
return "User ID: " + id;
}
@GetMapping("/user")
public String getUser(@RequestParam String name) {
return "Hello, " + name;
}
}
数据库连接与配置
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
jpa:
hibernate:
ddl-auto: update
示例代码
application.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
jpa:
hibernate:
ddl-auto: update
配置 Spring Boot 应用
配置 application.properties
或 application.yml
文件
application.properties
server.port=8080
spring.application.name=demo-app
application.yml
server:
port: 8080
spring:
application:
name: demo-app
环境变量与配置属性详解
在Spring Boot中,可以使用环境变量来配置一些属性,如数据库连接字符串、端口号等。
使用环境变量
server.port=${PORT:8080}
spring.datasource.url=${DB_URL:jdbc:mysql://localhost:3306/test}
创建简单的 REST API
创建第一个 Controller
HelloController.java
package com.example.demo.controller;
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!";
}
}
使用注解定义 RESTful API
HelloController.java
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
路径参数与查询参数处理
UserController.java
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user/{id}")
public String getUser(@PathVariable String id) {
return "User ID: " + id;
}
@GetMapping("/user")
public String getUser(@RequestParam String name) {
return "Hello, " + name;
}
}
使用 Spring Boot 的测试功能
单元测试与集成测试
单元测试
单元测试主要用于测试单个组件或类的逻辑。
DemoApplicationTests.java
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
@Test
void contextLoads() {
}
}
集成测试
集成测试用于测试多个组件之间的交互。
UserControllerTest.java
package com.example.demo.controller;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void getUser() throws Exception {
mockMvc.perform(get("/user/1"))
.andExpect(status().isOk())
.andExpect(content().string("User ID: 1"));
mockMvc.perform(get("/user?id=world"))
.andExpect(status().isOk())
.andExpect(content().string("Hello, world"));
}
}
使用 JUnit 和 Spring Boot Test 框架
DemoApplicationTests.java
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
@Test
void contextLoads() {
}
}
UserControllerTest.java
package com.example.demo.controller;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void getUser() throws Exception {
mockMvc.perform(get("/user/1"))
.andExpect(status().isOk())
.andExpect(content().string("User ID: 1"));
mockMvc.perform(get("/user?id=world"))
.andExpect(status().isOk())
.andExpect(content().string("Hello, world"));
}
}
断言与数据驱动测试
UserControllerTest.java
package com.example.demo.controller;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void getUser() throws Exception {
mockMvc.perform(get("/user/1"))
.andExpect(status().isOk())
.andExpect(content().string("User ID: 1"));
mockMvc.perform(get("/user?id=world"))
.andExpect(status().isOk())
.andExpect(content().string("Hello, world"));
}
}
部署和运行 Spring Boot 应用
打包 Spring Boot 应用
Maven 打包
mvn clean package
Gradle 打包
./gradlew clean build
部署到本地或远程服务器
将打包后的应用部署到本地或远程服务器。
本地部署
直接运行打包后的 jar
文件。
java -jar target/demo-0.0.1-SNAPSHOT.jar
远程服务器部署
将 jar
文件上传到远程服务器,并使用命令运行:
scp target/demo-0.0.1-SNAPSHOT.jar user@remote:~
ssh user@remote
java -jar demo-0.0.1-SNAPSHOT.jar
应用监控与日志管理
使用Spring Boot的内置监控工具,如Actuator,管理和监控应用。
启用 Actuator
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
示例代码
Maven 打包
mvn clean package
Gradle 打包
./gradlew clean build
本地部署
java -jar target/demo-0.0.1-SNAPSHOT.jar
远程服务器部署
scp target/demo-0.0.1-SNAPSHOT.jar user@remote:~
ssh user@remote
java -jar demo-0.0.1-SNAPSHOT.jar
启用 Actuator
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
总结
通过以上步骤,你已经成功搭建了一个基于Spring Boot 3和JDK 17的后端应用。从环境搭建到项目创建,再到配置、测试、部署和监控,每个步骤都尽可能详细地进行了说明,并提供了示例代码。你可以根据实际需求进一步扩展和改进你的项目。如果你需要更深入的学习,推荐访问 慕课网 以获取更多相关教程和实战项目。
共同学习,写下你的评论
评论加载中...
作者其他优质文章