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

SpringBoot3资料:新手入门教程与实践指南

标签:
SpringBoot
概述

本文全面介绍了SpringBoot3资料,包括其核心概念、新特性、下载安装方法以及如何创建和部署一个简单的SpringBoot3项目。文章还详细讲解了SpringBoot3的配置文件管理、Web开发实践以及数据库集成等关键内容。

引入SpringBoot3简介

SpringBoot3的核心概念

Spring Boot 是一个基于 Spring 框架的简化开发框架,旨在提供一套快速开发的应用程序框架。Spring Boot 3.0 版本在2022年11月发布,带来了许多新的特性和改进,使得开发者能够更加高效地构建独立的、生产级别的 Spring 应用程序。

Spring Boot 3.0 的核心概念包括:

  • 自动配置:Spring Boot 通过对应用进行自动配置来简化开发过程,例如自动配置一个 Web 服务器、数据库连接、缓存等。
  • 起步依赖:Spring Boot 通过起步依赖简化了项目依赖的管理。开发人员只需在项目的 pom.xmlbuild.gradle 文件中添加相应的起步依赖,Spring Boot 就会自动添加所有必要的依赖项。
  • 命令行接口:Spring Boot 提供了一个命令行接口(CLI),允许直接运行和测试 Spring Boot 应用程序,从而简化开发流程。
  • 嵌入式服务器:Spring Boot 通常与嵌入式服务器(如 Tomcat、Jetty 或 Undertow)一起使用,使得应用程序可以在同一 JVM 中运行。
  • Actuator:Actuator 是 Spring Boot 的一个组件,提供了丰富的生产环境监控功能。它允许监控应用程序的运行状态,包括各种指标、健康检查和诊断信息等。
  • 内置的健康检查和监控:Actuator 提供了许多内置的健康检查端点,可以用于监控应用程序的运行状态。常见的健康检查端点包括 healthinfometricstrace 等。

SpringBoot3相较于前一版本的改进

Spring Boot 3.0 版本相对于之前的版本(如 Spring Boot 2.x)有许多重要的改进和新特性:

  • Java 17 支持:Spring Boot 3.0 与 Java 17 兼容,使得 Java 17 版本的特性可以直接在 Spring Boot 应用程序中使用。
  • 模块化依赖:为了提高启动速度和减少应用程序的大小,Spring Boot 3.0 对依赖进行了细粒度的模块化拆分。例如,Spring Boot 依赖中的许多组件被拆分为多个独立的模块。
  • Spring框架更新:Spring Boot 3.0 依赖于最新的 Spring 框架版本,包括 Spring Framework 5.3 以及 Spring Data 和 Spring Security 的最新版本。
  • 增强的性能:通过改进启动过程和优化内部实现,Spring Boot 3.0 提供了更快的启动速度。这种改进使得应用程序启动更加迅速,提高了开发和测试的效率。
  • 对新语言的支持:Spring Boot 3.0 引入了对 Kotlin 的更广泛支持,使得 Kotlin 语言可以无缝地集成到 Spring Boot 应用程序中。
  • 新的监控和诊断功能:Actuator 在 Spring Boot 3.0 中引入了更多的监控和诊断功能。这些功能可以通过 REST API 或 HTTP 端点访问,使得开发人员可以更方便地监控应用程序的运行状态。
  • HTTP/2和HTTP/3支持:Spring Boot 3.0 提供了对 HTTP/2 和 HTTP/3 协议的支持。这些协议提供了更好的网络性能和安全性,使得应用程序可以更好地服务于现代网络环境。

如何下载并安装SpringBoot3

要下载并安装 Spring Boot 3.0,可以按照以下步骤进行操作:

  1. 下载Spring Boot CLI(命令行接口)

    • 访问 Spring Boot 的官方网站 https://spring.io/
    • 导航到 "Downloads" 页面
    • 选择 "Spring Boot CLI" 并下载适用于你的操作系统的版本
    • 解压下载的文件,并将 Spring Boot CLI 的 bin 目录添加到系统的 PATH 环境变量中
  2. 使用构建工具创建项目
    • 如果使用 Maven,可以在命令行中执行以下命令来创建一个新的 Spring Boot 应用程序:
      mvn io.spring:initializr-maven-plugin:0.6.3:run \
      -DgroupId=com.example -DartifactId=hello-spring-boot -Dversion=3.0.0 -Ddependencies=web
    • 如果使用 Gradle,可以在命令行中执行以下命令来创建一个新的 Spring Boot 应用程序:
      ./gradlew init \
      --type java-application --language java --test-framework junit --profile spring-boot

创建第一个SpringBoot3项目

准备开发环境

为了创建第一个 Spring Boot 3.0 项目,需要确保开发环境已正确配置。以下是所需环境的配置步骤:

  1. 安装Java

  2. 安装构建工具

  3. 安装IDE

初始化SpringBoot3项目

使用 Spring Initializr 网站或构建工具来初始化 Spring Boot 项目。

  1. 使用Spring Initializr网址创建项目

    • 打开浏览器并访问 https://start.spring.io/
    • 选择 “Maven” 或 “Gradle” 作为构建工具
    • 选择项目语言为 Java
    • 输入项目的基本信息,如:Group ID(比如 com.example),Artifact ID(比如 hello-spring-boot),依赖(比如 web
  2. 使用IDE创建项目

    • 在 IntelliJ IDEA 中,选择 "File" -> "New" -> "Spring Initializr Project"
    • 在 Eclipse 中,选择 "File" -> "New" -> "Spring Starter Project"
    • 选择相应的项目配置,如依赖、语言、版本等
  3. 使用构建工具创建项目

    • 使用 Maven 创建项目:
      mvn io.spring:initializr-maven-plugin:0.6.3:run \
      -DgroupId=com.example -DartifactId=hello-spring-boot -Dversion=3.0.0 -Ddependencies=web
    • 使用 Gradle 创建项目:
      ./gradlew init \
      --type java-application --language java --test-framework junit --profile spring-boot
  4. 项目结构
    • 项目结构通常包含以下目录:
      • src/main/java:Java 源代码
      • src/main/resources:资源文件,如配置文件和静态资源
      • src/test/java:测试代码
      • pom.xmlbuild.gradle:构建配置文件

运行第一个SpringBoot3应用程序

要运行第一个 Spring Boot 应用程序,可以执行以下步骤:

  1. 编写主类

    • 创建一个 Java 类(例如 HelloApplication.java),并将 @SpringBootApplication 注解应用到该类上:

      package com.example.hello;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RestController;
      
      @SpringBootApplication
      public class HelloApplication {
       public static void main(String[] args) {
           SpringApplication.run(HelloApplication.class, args);
       }
      
       @RestController
       public static class HelloWorldController {
           @GetMapping("/")
           public String helloWorld() {
               return "Hello, World!";
           }
       }
      }
  2. 配置启动类

    • src/main/java/com/example/hello/HelloApplication.java 文件中,添加 main 方法以启动应用程序:

      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      @SpringBootApplication
      public class HelloApplication {
       public static void main(String[] args) {
           SpringApplication.run(HelloApplication.class, args);
       }
      }
  3. 运行应用程序

    • 使用 Maven:
      mvn spring-boot:run
    • 使用 Gradle:
      ./gradlew bootRun
    • 使用 IDE:可以通过 IDE 的运行配置来启动应用程序
  4. 测试应用程序
    • 打开浏览器并访问 http://localhost:8080/
    • 确保看到 "Hello, World!" 的响应

SpringBoot3常用配置详解

配置文件解析(application.properties和application.yml)

Spring Boot 使用 application.propertiesapplication.yml 文件来配置应用程序。以下是配置文件的基本结构和示例:

  1. application.properties

    • 这是传统的属性文件格式,使用键值对来配置应用程序的属性。
    • 示例:

      # 应用程序基本信息
      spring.application.name=hello-spring-boot
      
      # 数据源配置
      spring.datasource.url=jdbc:mysql://localhost:3306/mydb
      spring.datasource.username=root
      spring.datasource.password=root
      
      # JPA 配置
      spring.jpa.hibernate.ddl-auto=update
      spring.jpa.show-sql=true
      
      # 日志配置
      logging.level.root=INFO
      logging.file.name=app.log
  2. application.yml

    • YAML 是一种数据序列化语言,相比属性文件更加灵活。
    • 示例:

      spring:
      application:
       name: hello-spring-boot
      datasource:
       url: jdbc:mysql://localhost:3306/mydb
       username: root
       password: root
      jpa:
       hibernate:
         ddl-auto: update
       show-sql: true
      
      logging:
      level:
       root: INFO
      file:
       name: app.log

配置文件的外部化

Spring Boot 支持将配置文件外部化,这样可以更灵活地管理配置。外部化配置可以通过以下几种方式实现:

  1. 环境变量

    • 通过环境变量来配置属性:
      export SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/mydb
      export SPRING_DATASOURCE_USERNAME=root
      export SPRING_DATASOURCE_PASSWORD=root
  2. 命令行参数

    • 在运行应用程序时通过命令行参数指定属性:
      java -jar hello-spring-boot.jar --spring.datasource.url=jdbc:mysql://localhost:3306/mydb
  3. 命令行属性文件

    • 可以使用 --spring.config.location 参数来指定配置文件的路径:
      java -jar hello-spring-boot.jar --spring.config.location=classpath:/config/,file:./config/
  4. 配置文件优先级
    • Spring Boot 按照一定的优先级加载配置文件:
      • @ConfigurationProperties 注解中的属性优先级最高
      • 程序员自定义的配置文件(如 application.properties)次之
      • 系统属性(如环境变量和命令行参数)再次之
      • 默认属性(如 spring.main.banner-mode=none)最低

常见配置项示例

以下是一些常见的配置项示例:

  1. 日志配置

    • logging.level.root=INFO:设置根日志级别为 INFO
    • logging.file.name=app.log:定义日志输出文件的路径
  2. 数据源配置

    • spring.datasource.url=jdbc:mysql://localhost:3306/mydb:数据库连接 URL
    • spring.datasource.username=root:数据库用户名
    • spring.datasource.password=root:数据库密码
  3. JPA 配置

    • spring.jpa.hibernate.ddl-auto=update:指定 Hibernate 的 DDL 模式(update,create,create-drop)
    • spring.jpa.show-sql=true:是否在控制台显示生成的 SQL 语句
  4. Web 服务器配置
    • server.port=8080:设置 Web 服务器的端口
    • server.servlet.context-path=/api:定义 Servlet 上下文路径
    • server.tomcat.access.log-enabled=true:启用访问日志

SpringBoot3常见Web开发实践

创建RESTful服务

创建 RESTful 服务是 Spring Boot 应用程序中最常见的任务之一。以下是创建一个简单的 RESTful 服务的示例:

  1. 创建一个 REST 控制器

    • 创建一个 Java 类,使用 @RestController 注解标记为 REST 控制器:

      package com.example.hello;
      
      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, Restful!";
       }
      }
  2. 运行应用程序并测试 REST 服务
    • 启动应用程序
    • 打开浏览器并访问 http://localhost:8080/api/hello
    • 确保看到 "Hello, Restful!" 的响应

使用Thymeleaf模板引擎

Thymeleaf 是一个流行的 Java 模板引擎,用于生成 HTML 文档。以下是如何在 Spring Boot 应用程序中使用 Thymeleaf 的示例:

  1. 添加 Thymeleaf 依赖

    • pom.xmlbuild.gradle 文件中添加 Thymeleaf 依赖:
      <!-- Maven -->
      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>

      或者

      // Gradle
      implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
  2. 创建一个 Thymeleaf 模板

    • src/main/resources/templates 目录下创建一个 HTML 文件,例如 hello.html
    • 示例模板:
      <!DOCTYPE html>
      <html xmlns:th="http://www.thymeleaf.org">
      <head>
       <title>Hello, Thymeleaf!</title>
      </head>
      <body>
       <h1>Hello, Thymeleaf!</h1>
       <p th:text="'Hello, ' + ${name}">Hello, World!</p>
      </body>
      </html>
  3. 创建一个控制器来渲染模板

    • 创建一个控制器来渲染模板:

      package com.example.hello;
      
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.GetMapping;
      
      @Controller
      public class HelloController {
       @GetMapping("/hello")
       public String hello(Model model) {
           model.addAttribute("name", "World");
           return "hello";
       }
      }
  4. 测试模板渲染
    • 启动应用程序
    • 打开浏览器并访问 http://localhost:8080/hello
    • 确保看到 "Hello, Thymeleaf!" 和 "Hello, World!" 的内容

静态资源的管理

Spring Boot 默认提供了一套静态资源的处理机制,可以轻松地管理和提供静态资源。

  1. 静态资源目录结构

    • src/main/resources/static 目录下创建一个 css 文件夹,并添加一个样式文件,例如 style.css
    • 示例 style.css 文件:
      body {
       background-color: lightblue;
       font-family: Arial, sans-serif;
      }
      h1 {
       color: navy;
       text-align: center;
      }
  2. 访问静态资源

    • 在 HTML 模板中引用静态资源,例如 hello.html 文件:
      <!DOCTYPE html>
      <html xmlns:th="http://www.thymeleaf.org">
      <head>
       <title>Hello, Thymeleaf!</title>
       <link rel="stylesheet" th:href="@{/css/style.css}" href="/css/style.css">
      </head>
      <body>
       <h1>Hello, Thymeleaf!</h1>
       <p th:text="'Hello, ' + ${name}">Hello, World!</p>
      </body>
      </html>
  3. 测试静态资源的访问
    • 启动应用程序
    • 打开浏览器并访问 http://localhost:8080/hello
    • 确保页面背景颜色为浅蓝色,文字颜色为深蓝色

SpringBoot3与数据库的集成

连接数据库(如MySQL和PostgreSQL)

在 Spring Boot 中连接数据库通常需要一些配置步骤,包括依赖项的添加和配置文件的设置。

  1. 添加数据库连接依赖

    • 对于 MySQL,可以在 pom.xmlbuild.gradle 文件中添加 MySQL 驱动依赖:
      <!-- Maven -->
      <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
      </dependency>

      或者

      // Gradle
      implementation 'mysql:mysql-connector-java'
    • 对于 PostgreSQL,可以在 pom.xmlbuild.gradle 文件中添加 PostgreSQL 驱动依赖:
      <!-- Maven -->
      <dependency>
       <groupId>org.postgresql</groupId>
       <artifactId>postgresql</artifactId>
      </dependency>

      或者

      // Gradle
      implementation 'org.postgresql:postgresql'
  2. 配置数据源

    • application.propertiesapplication.yml 文件中配置数据源属性:
      # MySQL 数据源配置
      spring.datasource.url=jdbc:mysql://localhost:3306/mydb
      spring.datasource.username=root
      spring.datasource.password=root
      spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

      或者

      # PostgreSQL 数据源配置
      spring:
      datasource:
       url: jdbc:postgresql://localhost:5432/mydb
       username: postgres
       password: postgres
       driver-class-name: org.postgresql.Driver
  3. 运行数据库迁移
    • 使用 Spring Boot 的 spring.jpa.hibernate.ddl-auto 属性来控制数据库迁移行为:
      • update:更新现有的数据库结构以匹配实体类的结构
      • create:每次应用启动时都会创建一个新的数据库
      • create-drop:每次应用启动时创建一个新的数据库,在应用关闭时删除该数据库
      • validate:验证现有的数据库结构以匹配实体类的结构,但不进行任何修改

使用JPA进行数据操作

Spring Boot 使用 JPA(Java Persistence API)来执行数据操作。以下是使用 JPA 进行数据操作的示例:

  1. 创建一个实体类

    • 创建一个 Java 类,使用 @Entity 注解标记为实体类:

      package com.example.hello;
      
      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;
      
       // Getter 和 Setter 方法
       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;
       }
      }
  2. 创建一个仓库接口

    • 创建一个接口,继承自 JpaRepository

      package com.example.hello;
      
      import org.springframework.data.jpa.repository.JpaRepository;
      import org.springframework.stereotype.Repository;
      
      @Repository
      public interface UserRepository extends JpaRepository<User, Long> {
      }
  3. 创建一个服务类

    • 创建一个服务类来处理业务逻辑:

      package com.example.hello;
      
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      @Service
      public class UserService {
       @Autowired
       private UserRepository userRepository;
      
       public User saveUser(User user) {
           return userRepository.save(user);
       }
      
       public User getUserById(Long id) {
           return userRepository.findById(id).orElse(null);
       }
      }
  4. 创建一个控制器

    • 创建一个控制器来处理 HTTP 请求:

      package com.example.hello;
      
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      
      @RestController
      public class UserController {
       @Autowired
       private UserService userService;
      
       @PostMapping("/users")
       public User createUser(@RequestBody User user) {
           return userService.saveUser(user);
       }
      
       @GetMapping("/users/{id}")
       public User getUser(@PathVariable Long id) {
           return userService.getUserById(id);
       }
      }

实现简单的CRUD操作

  1. 创建实体类

    • 在上一个示例中,已经创建了一个 User 实体类。
    • 该实体类定义了 idnameemail 字段,并提供了相应的 getter 和 setter 方法。
  2. 创建仓库接口

    • 在上一个示例中,已经创建了一个 UserRepository 接口,继承自 JpaRepository,并定义了基本的 CRUD 操作。
  3. 创建服务类

    • 在上一个示例中,已经创建了一个 UserService 服务类,用于处理业务逻辑。
  4. 创建控制器

    • 在上一个示例中,已经创建了一个 UserController 控制器,用于处理 HTTP 请求。
  5. 测试 CRUD 操作
    • 启动应用程序
    • 使用 Postman 或其他工具测试 CRUD 操作:
      • POST 请求以创建用户:http://localhost:8080/users
      • GET 请求以获取用户:http://localhost:8080/users/1

SpringBoot3项目的打包与部署

打包SpringBoot应用程序

在 Spring Boot 应用程序开发完成后,可以将应用程序打包成一个可执行的 JAR 文件,以便于部署和发布。

  1. 打包步骤

    • 使用 Maven 或 Gradle 打包应用程序:
      mvn clean package

      或者

      ./gradlew clean build
    • 打包后的 JAR 文件通常位于 targetbuild/libs 目录下
  2. 执行 JAR 文件
    • 使用命令行运行打包好的 JAR 文件:
      java -jar target/hello-spring-boot.jar

部署到本地服务器

将 Spring Boot 应用程序部署到本地服务器通常涉及将应用程序部署到一个支持 Java 的应用服务器(如 Tomcat)。

  1. 部署到Tomcat

    • 将打包好的 JAR 文件复制到 Tomcat 的 webapps 目录
    • 启动 Tomcat 服务器
    • 打开浏览器并访问部署的应用程序
  2. 使用Docker部署
    • 创建一个 Dockerfile 文件:
      FROM openjdk:17-jdk-alpine
      COPY target/hello-spring-boot.jar app.jar
      EXPOSE 8080
      CMD ["java", "-jar", "app.jar"]
    • 构建 Docker 镜像:
      docker build -t hello-spring-boot:latest .
    • 运行 Docker 容器:
      docker run -p 8080:8080 -d hello-spring-boot:latest

部署到云端(如Docker和Kubernetes)

将 Spring Boot 应用程序部署到云平台(如 Docker 和 Kubernetes)通常需要创建 Docker 镜像并使用 Kubernetes 部署这些镜像。

  1. 创建Dockerfile

    • 在项目根目录下创建一个 Dockerfile 文件:
      FROM openjdk:17-jdk-alpine
      COPY target/hello-spring-boot.jar app.jar
      EXPOSE 8080
      CMD ["java", "-jar", "app.jar"]
  2. 构建Docker镜像

    • 执行以下命令构建 Docker 镜像:
      docker build -t hello-spring-boot:latest .
  3. 创建Kubernetes部署文件

    • 在项目根目录下创建一个 deployment.yaml 文件:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: hello-spring-boot
      spec:
      replicas: 1
      selector:
       matchLabels:
         app: hello-spring-boot
      template:
       metadata:
         labels:
           app: hello-spring-boot
       spec:
         containers:
         - name: hello-spring-boot
           image: hello-spring-boot:latest
           ports:
           - containerPort: 8080
      ---
      apiVersion: v1
      kind: Service
      metadata:
      name: hello-spring-boot
      spec:
      selector:
       app: hello-spring-boot
      ports:
      - name: "8080-tcp"
       protocol: TCP
       port: 8080
       targetPort: 8080
      type: LoadBalancer
  4. 部署到Kubernetes
    • 使用 kubectl 工具部署到 Kubernetes:
      kubectl apply -f deployment.yaml
点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消