【SpringBoot系列】第一课:构建一个简单的SpringBoot应用程序

简介: 【4月更文挑战第3天】构建第一个SpringBoot应用程序

介绍

自 2012 年以来,我一直在使用 Spring 框架生态系统。随着时间的流逝,Spring增加了许多新模块,并且该框架的采用率也有所增加。截至今天,可以说是业内最受欢迎的框架。工程项目在Spring引擎盖下做了很多工作,感觉有时就像魔术一样,而且生产系统与入门指南有很大不同,初学者不仅要学习开箱即用的东西,还要了解它们是如何工作的。我将分享一系列博客文章,旨在从非常基础的知识开始,然后转向更高级的主题,我希望这个系列能帮助初学者在这个美丽的框架中踮起脚尖。

在这篇博客中,我们将了解如何创建您的第一个 Spring Boot 应用程序。Spring Boot 是 Spring 框架世界中的另一个产品,它使创建 Spring 应用程序变得容易,在当今的微服务世界中,它已被高度采用。Spring Boot 应用程序是简单的 Java 应用程序,具有一些特定的 Spring 依赖项。我们可以使用项目管理工具(如 maven 或 gradle)来创建我们的应用程序,在这篇博客中,我将使用 Maven 作为依赖项管理器。

一、构建

那么如何开始,下面有几个选项:

  • 使用 mvn 原型创建新的 spring boot 应用程序。它可以是一个简单的基于 maven 的项目。

  • 选择从网站 start.spring.io 创建一个项目,下面是它的外观截图
    image.png

正如我们截图中看到的,构建工程有多种选项。在左侧,我们可以使用 Maven 或 Gradle 作为构建工具。我们也可以选择 Java 或 kotlin 或 Groovy 作为我们的应用程序语言。Spring Boot 目前有两个主要版本分支 2.x 和即将推出的 3.x 版本。之后,提供您的应用程序名称和其他详细信息,将应用程序打包为 Jar 或 War。我们将选择 Jar ,稍后将详细介绍如何打包应用程序,最后是 Java 版本,我们最多可以选择 Java 18。对于这篇博客,我将使用 Java 17 。

截图右边是项目依赖关系,Spring Boot 应用程序基于 Spring 框架。因此,运行应用程序需要一些依赖项。我们可以手动提供这些依赖项,也可以使用称为spring-boot-starters的东西,这些是精心策划的依赖项集,专注于向应用程序添加一些特定功能。我们将用于创建 Web 应用程序的第一个依赖项称为 spring-boot-starter-web,这将为我们提供一个嵌入式 tomcat 服务器,并使我们能够将应用程序作为 Web 应用程序运行。添加后,我们单击“生成”。这将下载一个带有 maven 项目的 zip 文件。

二、应用程序

生成的项目结构如下所示:
image.png

一个典型的maven项目,pom.xml如下所示
image.png

首先,我们看到有两个 depedencies,spring-boot-starter-web 和 spring-boot-starter-test。后者用于单元测试并获取 junit5。

这里需要注意的是,除了依赖项之外,还有一个继承的父 pom。父 pom 是 spring-boot-starter-parent。这个父 pom 包含所有构建插件,因此当我们执行一个简单的 mvn 包命令时,我们会得到一个可运行的 jar。它包含许多有关配置属性和其他内容的配置。这个父启动器又继承自 spring-boot-dependencies,其中包含 Spring Boot 的兼容精选依赖项集。

在编辑器中,你可以进入这些父 pom 中的每一个,看看它们实际获取了什么,但并不是绝对有必要了解它们中的每一个,因为大多数时候你不需要配置它们。现在我们有一个Spring Boot 项目,我们看到了我们有什么依赖关系。让我们看看如何运行我们全新的应用程序以及输出是什么。

有很多方法可以运行应用程序 :

  • 运行 jar 文件。Spring Boot 应用程序会生成一个可运行的 jar,其中包含所有依赖项,可以直接运行。

  • 使用 IDE ,每个 Spring 启动应用程序都有一个 main 方法,我们可以从 IDE 运行 main 方法。

  • 您还可以将应用程序容器化并运行 docker instant。稍后会详细介绍。 spring 还支持一种叫做 buildpack 的东西,即使没有 Dockerfile,它也会生成一个镜像。

让我们首先看看运行jar 。首先,我们使用 mvn 包打包应用程序。然后只需运行 java -jar 就可以了,输出如下所示:
image.png

从输出中我们可以看到它已经启动了一个 tomcat 服务器,并且它正在侦听端口 8080。这是默认设置。我们也可以使用 Jetty 服务器而不是 tomcat 服务器。此外,我们也可以将默认端口更改为其他端口。

三、Jar包组成

我们可以查看 jar 文件里面的内容,我们可以使用命令jar -xvf 提取或解压缩jar文件,输出如下:
image.png

查看jar包内部很重要,我们将在后面看到一些优化有助于更快的构建和启动。现在,我们有一个正在运行的应用程序,我们知道如何在本地运行它,让我们看一些快速配置。

四、修改端口

如果我们运行单个应用程序,则默认端口 8080 可能很好,但是如果我们想运行另一个应用程序怎么办?在典型的生产环境中,单个物理/虚拟服务器可以承载多个应用程序。我们可以使用 application.properties 中的 server.port 属性来更改端口。

五、修改Jetty容器

Tomcat 开箱即用,我们也可以将 Jetty 用作嵌入式服务器,为此,我们需要修改 pom 配置如下:
image.png

关于更详细的信息,我们可以查看 https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.webserver

小结

在这篇文章中,我们学了SpringBoot工程的构建,编译和运行。我们刚刚迈出了一小步,创建了一个简单的 Spring Boot 应用程序。在下一篇文章中,我们将深入探讨如何打包我们的应用程序。

相关文章
|
12天前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
|
2月前
|
Java
springboot如何确定当前应用程序是响应式的还是非响应式的
springboot如何确定当前应用程序是响应式的还是非响应式的
springboot如何确定当前应用程序是响应式的还是非响应式的
|
4月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
49 0
|
3月前
|
消息中间件 NoSQL Java
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
247 1
|
13天前
|
Java Maven Docker
【SpringBoot系列】SpringBoot应用程序容器化及容器优化
【4月更文挑战第4天】SpringBoot应用程序容器化及容器大小优化
|
2月前
|
Java API Maven
使用Java和Spring Boot构建RESTful API
使用Java和Spring Boot构建RESTful API
16 0
|
3月前
|
存储 开发框架 算法
|
3月前
|
存储 NoSQL 关系型数据库
轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】
轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】
70 0
|
3月前
|
XML Java 数据格式
从零开始构建Spring Boot应用:逐步解析@SpringBootApplication
从零开始构建Spring Boot应用:逐步解析@SpringBootApplication
41 0
|
3月前
|
前端开发 Java API
构建异步高并发服务器:Netty与Spring Boot的完美结合
构建异步高并发服务器:Netty与Spring Boot的完美结合