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

Springboot3+JDK17搭建后端教程:入门级详解

标签:
Java SpringBoot
概述

本文详细介绍了如何从零开始搭建开发环境,包括JDK17的安装与配置,以及Spring Boot 3项目的创建与配置。文章还涵盖了开发工具的选择与安装,以及项目结构的解析。通过这些步骤,读者可以轻松构建并运行一个基本的Spring Boot应用。

开发环境搭建
JDK 17 安装与配置

安装 JDK 17

首先,访问Oracle官方网站或Adoptium项目获取并下载JDK 17的安装包。安装过程因操作系统不同而略有差异。

Windows 安装步骤

  1. 下载JDK 17 Windows版本的安装包。
  2. 双击安装包,按照向导进行安装。
  3. 在安装过程中,确保勾选“Set JAVA_HOME”选项,以便设置环境变量。
  4. 点击“Finish”完成安装。

Mac OS 安装步骤

  1. 使用Homebrew安装JDK 17:

    brew tap adoptopenjdk/openjdk
    brew install adoptopenjdk17
  2. 通过Adoptium项目下载和安装JDK 17。

Linux 安装步骤

  1. 使用包管理器(如apt、yum)安装JDK 17:

    sudo apt-get update
    sudo apt-get install openjdk-17-jdk
  2. 通过Adoptium项目下载并安装JDK 17。

配置环境变量

安装完成后,需要配置环境变量以确保Java能够被系统识别。

Windows

  1. 打开“系统属性”>“高级系统设置”>“环境变量”。
  2. 在“系统变量”区域中找到Path变量,点击“编辑”。
  3. 点击“新建”,输入JDK的bin目录路径,如C:\Program Files\Java\jdk-17\bin
  4. 点击“确定”保存设置。

Mac OS/Linux

编辑~/.bashrc~/.zshrc文件,添加如下内容:

export JAVA_HOME=/path/to/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

重启终端或运行source ~/.bashrcsource ~/.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 创建新项目

  1. 访问 Spring Initializr 网站。
  2. 选择项目类型为Maven项目(或Gradle项目)。
  3. 输入项目基本信息,如组(Group)和名(Artifact)。
  4. 选择Spring Boot 3版本。
  5. 添加所需依赖,如Web、Thymeleaf、Reactive等。
  6. 点击“Generate”生成项目文件。

手动配置 Maven 或 Gradle

pom.xmlbuild.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 安装

  1. 访问 IntelliJ IDEA 官网下载并安装最新版本。
  2. 选择适合的版本,社区版或专业版。
  3. 安装完成后,打开 IntelliJ IDEA。
  4. 创建新的 Spring Boot 项目,选择之前通过 Spring Initializr 生成的项目文件夹。
  5. 在项目视图中,可以看到项目结构和依赖管理。

项目结构解析

一个典型的 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.propertiesapplication.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的后端应用。从环境搭建到项目创建,再到配置、测试、部署和监控,每个步骤都尽可能详细地进行了说明,并提供了示例代码。你可以根据实际需求进一步扩展和改进你的项目。如果你需要更深入的学习,推荐访问 慕课网 以获取更多相关教程和实战项目。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消