【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 应用程序。在下一篇文章中,我们将深入探讨如何打包我们的应用程序。

目录
相关文章
|
30天前
|
存储 运维 Java
使用 @Audited 增强Spring Boot 应用程序的数据审计能力
【7月更文挑战第19天】在Spring Boot应用中使用`@Audited`增强数据审计能力涉及在相关实体或方法上添加该注解以标记需审计的操作。例如,在`User`类的`updateUser`方法上使用`@Audited`可记录更新操作的详情。此外,还需配置审计日志存储方式(如数据库)及事件过滤规则等。这有助于满足合规性需求、故障排查及数据分析,对数据安全和完整至关重要。
|
16天前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
3天前
|
监控 Java API
Spring Boot中的异步革命:构建高性能的现代Web应用
【8月更文挑战第29天】Spring Boot 是一个简化 Spring 应用开发与部署的框架。异步任务处理通过后台线程执行耗时操作,提升用户体验和系统并发能力。要在 Spring Boot 中启用异步任务,需在配置类上添加 `@EnableAsync` 注解,并定义一个自定义的 `ThreadPoolTaskExecutor` 或使用默认线程池。通过 `@Async` 注解的方法将在异步线程中执行。异步任务适用于发送电子邮件、数据处理、外部 API 调用和定时任务等场景。最佳实践中应注意正确配置线程池、处理返回值和异常、以及监控任务状态,确保系统的稳定性和健壮性。
|
2月前
|
Java 持续交付 Maven
Spring Boot程序的打包与运行:构建高效部署流程
构建高效的Spring Boot部署流程对于保障应用的快速、稳定上线至关重要。通过采用上述策略,您可以确保部署过程的自动化、可靠性和高效性,从而将专注点放在开发上面。无论是通过Maven的生命周期命令进行打包,还是通过容器技术对部署过程进行优化,选择正确的工具与实践是成功实现这一目标的关键。
69 2
|
27天前
|
存储 Java 数据库
使用 @Audited 增强Spring Boot 应用程序的数据审计能力
【8月更文挑战第3天】在Spring Boot应用中,`@Audited`注解能显著提升数据审计能力。它可用于标记需审计的方法或类,记录操作用户、时间和类型等信息。此注解支持与Logback或Log4j等日志框架集成,亦可将审计信息存入数据库,便于后续分析。此外,还支持自定义审计处理器以满足特定需求。
|
2月前
|
存储 Java 数据挖掘
构建基于Spring Boot的数据分析平台
构建基于Spring Boot的数据分析平台
|
2月前
|
Java 数据管理 API
构建基于Spring Boot的数据管理平台
构建基于Spring Boot的数据管理平台
|
2月前
|
安全 Java API
构建基于Spring Boot的REST API安全机制
构建基于Spring Boot的REST API安全机制
|
2月前
|
NoSQL Java MongoDB
使用Spring Boot构建响应式应用
使用Spring Boot构建响应式应用
|
2月前
|
存储 NoSQL Java
使用Spring Boot和MongoDB构建NoSQL应用
使用Spring Boot和MongoDB构建NoSQL应用
下一篇
云函数