1. Spring Boot 3 入门学习教程之开发第一个 Spring Boot 应用程序

news2025/2/26 22:57:35

Spring Boot 3 入门学习教程之开发第一个 Spring Boot 应用程序

  • 0. 前言
  • 1. Spring Boot 介绍
  • 2. 系统要求
    • 2.1 Servlet容器
    • 2.2 GraalVM Native Image(GraalVM 原生镜像)
  • 3. 安装Spring Boot 开发环境
    • 3.1 安装JDK
    • 3.2 安装Spring Boot构建工具
      • 3.2.1 方式一:安装Maven
      • 3.2.2 方式二:安装Gradle
    • 3.3 选择你的开发IDE
  • 4. 开发第一个Spring Boot 应用程序
    • 4.1 创建我们的第一个Spring Boot 应用程序
    • 4.2 源码下载
  • 3 寻求帮助

0. 前言

Spring Boot 简化了Java企业级应用的开发, 最近更是迎来了第一个3.0.0 正式版本。

1. Spring Boot 介绍

Spring Boot 可帮助我们创建可以运行的独立的、生产级的基于 Spring 的应用程序。

Spring 官方团队对Spring平台和开源的第三方库做了工业级的简化设计,可以让我们更简单的使用这些第三方库。

  • 大多数 Spring Boot 应用程序需要很少的 Spring 配置。
  • 我们可以使用 Spring Boot 创建可以通过使用java -jar或更传统的 war 部署启动的 Java 应用程序。
  • Spring 官方团队还提供了一个运行“spring scripts”的命令行工具。
  • Spring 官方团队的主要目标是:
    • 为所有 Spring 开发提供速度极快且可广泛访问的入门体验。
    • 开箱即用,但随着需求开始偏离默认值,请迅速摆脱困境。
    • 提供一系列大型项目通用的非功能特性(例如嵌入式服务器、安全性、指标、健康检查和外部化配置)。
    • 绝对没有代码生成,也不需要 XML 配置。

2. 系统要求

Spring Boot 3.0.0 需要 Java 17,并且兼容 Java 19(包括 Java 19 )。

还需要Spring Framework 6.0.2或更高版本。

Build ToolVersion
Maven3.5+
Gradle7.x (7.5 or later)

2.1 Servlet容器

NameServlet Version
Tomcat 10.05.0
Jetty 11.05.1
Undertow 2.2 (Jakarta EE 9 variant)5.0

除此之外,SpringBoot 也兼容任何Servlet 5.0+ 以上的容器

2.2 GraalVM Native Image(GraalVM 原生镜像)

我们可以使用 GraalVM 22.3 或更高版本将 Spring Boot 应用程序转换为本机镜像。

我们还可以使用native-maven-plugin/ native-gradle-plugin插件或GraalVM 提供的native-image工具来创建镜像。

我们还可以使用paketo-buildpacks提供的native-image 创建原生镜像。

支持如下版本:

NameVersion
GraalVM Community22.3
Native Build Tools0.9.18

3. 安装Spring Boot 开发环境

3.1 安装JDK

Spring Boot 3.0.0 需要 Java 17,并且兼容 Java 19(包括 Java 19 )。

注意:

  • Oracke JDK 是官方维护的JDK版本,最后一个免费商用版本是 2019年1月15日发布的Oracle JDK 8u201和8u202
  • 其他都是付费版本或规定时间内免费,如果希望用Oracle 付费JDK,可访问 Oracle JDK 官方下载
  • 如果寻求其他替代解决方案, 具体的安装方法和其他下载链接参考: Java JDK 下载以及Oracle JDK替代解决方案

验证是否安装成功,可以输入如下命令确认:

java -version

执行成功后会返回如下类似的内容:

openjdk version "17.0.4.1" 2022-08-12 LTS
OpenJDK Runtime Environment (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM (build 17.0.4.1+1-LTS, mixed mode, sharing)

3.2 安装Spring Boot构建工具

3.2.1 方式一:安装Maven

  • Spring Boot 与 Apache Maven 3.3 或更高版本兼容。
  • 如果你还没有安装 Maven,可以按照maven.apache.org上的说明进行操作。
  • 如果是Mac OSX系统,可输入如下命令通过brew包管理器安装
brew install maven
  • 如果是Ubuntu 系统,可输入如下命令通过apt 包管理器安装:
sudo apt-get install maven
  • 其他学习参考博文:
    • Maven环境搭建基础入门指南
    • 版本依赖管理之 Maven 修炼手册

安装成功后可输入如下命令验证是否安装成功:

mvn -v

执行成功后会返回类似如下的内容:

Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: usr/Users/developer/tools/maven/3.8.5
Java version: 17.0.4.1, vendor: BellSoft, runtime: /Users/developer/sdkman/candidates/java/17.0.4.1-librca
  • 使用 Spring Boot Maven 插件,请在项目的pom.xmlplugins节点中添加如下插件:
<plugin>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>

spring-boot-maven-plugin插件的作用是将当前项目打包成可执行jar

如果使用release或版本,您还需要添加适当的pluginRepository元素,如以下清单所示:

<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <url>https://repo.spring.io/snapshot</url>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <url>https://repo.spring.io/milestone</url>
    </pluginRepository>
</pluginRepositories>

3.2.2 方式二:安装Gradle

Spring Boot 与 Gradle 7.x(7.5 或更高版本)兼容。

如果你还没有安装 Gradle,可以按照gradle.org上的说明进行操作。

Gradle下载安装配置以及与Maven用法对比

下面是一个使用Spring Boot Gradle 插件打包成可执行jar的示例:

build.gradle

plugins {
  id 'java'
  id 'org.springframework.boot' version '3.0.0'
  id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
  mavenCentral()
}

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
  useJUnitPlatform()
}
  • 安装Spring Boot CLI
    一般情况,我们不需要安装Spring Boot CLI只有当不通过IDE运行,而是通过脚本来部署,测试或运行Spring Boot时候才需要。
  • Spring Boot CLI(命令行界面)是一个命令行工具,可用于使用 Spring 快速制作可执行Jar
  • Spring Boot CLI允许我们运行Groovy脚本,这意味着我们可以拥有熟悉的类似 Java 的语法,而没有那么多模版代码。
  • 我们不需要使用 CLI 来使用 Spring Boot, 但这是在没有 IDE 的情况下启动 Spring 应用程序的快速方法
  • 手动安装Spring Boot CLI
    • spring-boot-cli-3.0.0-bin.zip
    • spring-boot-cli-3.0.0-bin.tar.gz

3.3 选择你的开发IDE

Spring Boot 不需要任何特殊工具集成,因此我们可以使用任何 IDE 或文本编辑器。

  • Intellij Idea - 强烈推荐,最好用的IDE
  • Spring Tools 4 for Eclipse
  • Spring Tools 4 for Visual Studio Code
  • Spring Tools 4 for Theia

4. 开发第一个Spring Boot 应用程序

  • spring.io网站包含许多使用 Spring Boot 的入门指南。

  • 如果我们需要解决特定问题,可以先在https://spring.io/guides 找下示例代码。

4.1 创建我们的第一个Spring Boot 应用程序

  1. Spring 官方团队提供了一个在线的项目构建生成器可以用来快速创建我们的项目:https://start.spring.io/

在这里插入图片描述
2. 选择web模块,然后点击GENERATE 生成按钮,就会将项目下载下来。
在这里插入图片描述

注意:
实际上使用的时候,Intellij idea 已经自带集成了start.sprign.io ,因此可以直接在IDE中获取即可。
关于更多详细介绍,请参考Spring Boot 2 中的讲解 Spring Boot 2.x 最佳实践之构建 Hello World web 应用程序

3.我们在项目的根目录创建一个叫做api的文件夹
在这里插入图片描述
4. 然后新建一个HomeEndPoint.java文件,作为我们的接口端点,也就是controller

package com.xingyun.springbootwithhelloworldwebsample.api;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/***
 * @author qingfeng.zhao
 * @date 2022/11/26
 * @apiNote
 */
@RestController
public class HomeEndPoint {

    @RequestMapping("/")
    public String home(){
        return "Hello World!";
    }
}
  1. 点击运行按钮
    在这里插入图片描述
    当出现如下内容,说明程序启动完成:
    在这里插入图片描述

  2. 浏览器打开:http://127.0.0.1:8080

然后我们可以看到网页上已经输出了我们写的第一行代码
在这里插入图片描述

代码的意思很简单,告诉Spring 这是一个控制器,当访问/ 请求的时候,返回“Hello World!”.

恭喜你,你已经学会使用Spring Boot 开发第一个最简单的web应用程序了。

4.2 源码下载

  • 直接下载spring-boot-with-hello-world-web-sample源码
  • 命令行下载源码
git clone -b spring-boot-3.0.0-release https://github.com/spring-boot-code-sample/spring-boot-with-hello-world-web-sample/tree/spring-boot-3.0.0-release

在这里插入图片描述

注意:

  • 以后会按照这个方式进行迭代,分支以spring boot 版本命名
  • 切换分支请使用-b 参数指定要下载的分支,默认main分支是最新版本

3 寻求帮助

如果在学习Spring Boot 3. 的过程中遇到困惑或问题可以通过如下途径解决:

  • 查看 How to Guide (应用程序开发、配置、嵌入式服务器、数据访问等等。)
  • 学习 Spring 基础知识。
    • Spring Boot 建立在许多其他 Spring 项目之上。
    • 查看spring.io网站以获得大量参考文档。
    • 如果您刚开始使用 Spring,请尝试其中一个指南。
  • 问一个问题
    • 我们监控stackoverflow.com以查找带有 标记的问题spring-boot
  • 在github.com/spring-projects/spring-boot/issues报告 Spring Boot 的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++标准库分析总结(九)——<仿函数/函数对象>

目录 1.functor仿函数简介 2 仿函数的分类 3 仿函数使用 4 仿函数可适配的条件 1.functor仿函数简介 仿函数是STL中最简单的部分&#xff0c;存在的本质就是为STL算法部分服务的&#xff0c;一般不单独使用。仿函数&#xff08;functors&#xff09;又称为函数对象&…

【InnoDB Cluster】修改已有集群实例名称及成员实例选项

【InnoDB Cluster】修改已有集群实例名称&#xff0c;成员实例名称和选项 文章目录【InnoDB Cluster】修改已有集群实例名称&#xff0c;成员实例名称和选项修改名称修改已有集群实例名称修改已有集群实例的成员实例名称修改成员服务器操作系统的主机名直接修改元数据库中的表使…

力扣(LeetCode)88. 合并两个有序数组(C++)

朴素思想 朴素思想&#xff0c;开第三个数组&#xff0c;对 nums1nums1nums1 和 nums2nums2nums2 进行二路归并。 class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {vector<int> nums3(mn);int i 0,j …

2.2 Linux启动初始化文件系统

为了方便了解和调试我们的Linux系统,我们需要将proc,debugfs,tmp等挂载起来,否则我们我发了解系统的进程,负载等信息,如下是未进行任何挂载时,我们无法通过ps等方法查看系统任何进程信息: 一,挂载proc fs proc是一个伪文件系统,(伪文件系统只存在内存中,而不占用存…

Node.js 入门教程 2 Node.js 简史

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Node.js 入门教程2 Node.js 简史2.1 一点历史2.2 20092.3 20102.4 20112.5 20122.6 20132.7 20142.8 20152.9 20162.10 20172.11 20182.12 2…

聊一聊微服务常见配置中心工作原理

0. 环境 nacos版本&#xff1a;1.4.1 Spring Cloud : 2020.0.2 Spring Boot &#xff1a;2.4.4 Spring Cloud alibaba: 2.2.5.RELEASE Spring Cloud openFeign 2.2.2.RELEASE 测试代码&#xff1a;github.com/hsfxuebao/s… 1. 配置中心基础 1.1 为什么要用配置中心&…

Js逆向教程-15滑块流程 极验

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程-15滑块流程 极验 一、滑块是什么&#xff1f; 区分是否是机器人。根据滑动轨迹区分是否是人操作的。 滑块肯定有滑动条 …

亚马逊云科技持续创新、领势而行,re:Invent颠覆想象

当一行行代码成为托起数字社会的基础架构&#xff0c;社会发展开始面临真正意义上的变革与重塑。作为云计算领域的探路者与引领者&#xff0c;亚马逊云科技持续创新、领势而行&#xff0c;正不断塑造并颠覆着大众关于云计算未来的想象。 2006年 开端 2006年&#xff0c;亚马逊…

【单片机基础】I2C通信-基于STC89C52RC

文章目录1、IIC总线结构2、IIC总线传输协议3、完成工程代码1、IIC总线结构 IIC总线是philips公司在八十年代初推出的一种串行、半双工总线。主要用于近距离、低速的芯片之间通信&#xff1b;IIC总线有两根双向的信号线&#xff0c;一根数据线SDA用于收发数据一根时钟线SCL用于…

Mac 使用paralles 从零搭建hadoop集群

目录 1. 虚机的安装与配置 1.1 安装parallels 1.2 安装fedora系统 1.3 fedora的配置 1.3.1 内存和硬盘配置 1.3.2 网络配置 1.3.3 共享文件夹 1.4 虚拟机克隆 与 加载 2. 免密登录 2.1 分别查看master&#xff0c; slave01&#xff0c;slave02 的ip 2.2 查看各虚机的…

关于mpy电压采集模块的那些事儿(ads1256 ads8688 ad7606)

先来个人生碎碎念&#xff0c;越狱第三次失败了&#xff0c;而且第四次也可能失败&#xff0c;没错就是这么尴尬&#xff0c;绝对越狱的事件还有917天&#xff0c;其实比较麻木了&#xff0c;越狱成功与否都无所谓了&#xff0c;其实现在出去&#xff0c;外头的疫情&#xff0c…

【学生网页设计作业源码】基于HTML+CSS+JavaScript简单的大学生书店(13个页面) 二手书店电子商务网站模板源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

常见的数据结构基本介绍

文章目录常见的数据结构介绍栈和队列的介绍数组数据结构链表数据结构二叉树和二叉查找树平衡二叉树红黑树结构常见的数据结构介绍 数据结构是计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。 通常情况下&#xff0c;精心选择的数据结构可以带来更…

应用ceph文件系统存储(ceph-13.2.10)

记录&#xff1a;333 场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;部署ceph-13.2.10集群。应用ceph文件系统(ceph file system)&#xff1b;主要是创建ceph文件系统、客户端挂载ceph文件系统等操作。 版本&#xff1a; 操作系统&#xff1a;CentOS 7.9 ceph版本&am…

JS获取音频的总时长,解决audio.duration 为 NaN || Infinity 问题

目录一、需求分析二、发现问题1.使用浏览器内置播放器<audio>无法显示时长2.获取总时长为 NaN || Infinity三、疑惑点四、解决方案一、需求分析 后端的接口中包含音频链接&#xff0c;前端需要自定义一个播放器播放音频。 二、发现问题 1.使用浏览器内置播放器<audi…

JPA 中使用 @OneToMany 、@ManyToOne 等关系映射注解

JPA 做 ORM(Object Relational Mapping&#xff0c;对象关系映射)时&#xff0c;为了开发效率&#xff0c;通常会在实体类上用 hibernate 的关系关联注解。 包括&#xff1a;OneToOne、 OneToMany 、ManyToOne 、ManyToMany 、JoinTable、以及 JoinColumn 以及 OrderBy&#xf…

汽车Automotive > SOME/IP应用学习

目录 SOME/IP介绍 SOME/IP主要功能 SOME/IP协议 SOME/IP服务类型 SOME/IP-举例 SOME/IP各模块协议 SOME/IP-基础元件 SOME/IP-SoAD SOME/IP-SD协议 SOME/IP-SD举例 SOME/IP-TP协议 SOME/IP-TP举例 SOME/IP介绍 SOME/IP ( Scalable service-Oriented Middleware ove…

面向大规模队列,百万并发的多优先级消费系统设计

大规模队列的核心诉求&#xff0c;不仅需要「快」&#xff0c;还需要兼顾「公平」。01 引言 HTTP是一种常用的通信协议&#xff0c;除了常见网站访问、上传下载&#xff0c;HTTP协议还经常被用在消息推送场景上。 设想你搭建了一个电商平台&#xff0c;有很多大型商家入驻了该…

Kotlin协程Flow浅析

Kotlin协程中的Flow主要用于处理复杂的异步数据&#xff0c;以一种”流“的方式&#xff0c;从上到下依次处理&#xff0c;和RxJava的处理方式类型&#xff0c;但是比后者更加强大。 Flow基本概念 Flow中基本上有三个概念&#xff0c;即 发送方&#xff0c;处理中间层&#x…

HTML+CSS大作业 (水果之家10个网页)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…