快速入门:使用 Spring Boot 构建 Web 应用程序

前言

本文将讨论以下主题:

  1. 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA
  2. 创建一个新的 Spring Boot 项目
  3. 运行 Spring Boot 应用程序
  4. 编写一个简单的 Web 应用程序
  5. 打包应用程序以用于生产环境

通过这些主题,您将能够开始使用 Spring Boot 并创建自己的 Web 应用程序。

文章目录

    • 前言
    • 介绍
      • Spring Boot简介
      • 为什么选择Spring Boot
    • 准备工作
      • 安装Java JDK
      • 安装Gradle或Maven
        • 安装Gradle
        • 安装Maven
      • 安装Eclipse或IntelliJ IDEA
        • 安装Eclipse
        • 安装IntelliJ IDEA
    • 创建Spring Boot项目
      • 使用 Maven 构建 Spring Boot 项目
        • 分析项目结构
        • 运行应用程序
        • Whitelabel
      • 使用 Gradle 构建 Spring Boot 项目
        • 分析项目结构
        • 运行应用程序
    • 编写第一个Web应用程序
      • 使用 Maven
      • 使用 Gradle
      • 打包成可执行jar包
      • 实现热部署
        • spring-boot-devtools
      • Maven的常用命令:
    • 总结

介绍

Spring Boot是一个用于构建基于Spring的应用程序的框架。它通过提供一些默认配置和约定来简化开发过程,使得构建可独立运行的、生产级别的应用程序变得更加容易。

Spring Boot简介

Spring Boot是Spring框架的扩展版本,可以帮助开发者更快地创建基于Spring的应用程序。与传统的Spring开发相比,Spring Boot采用了自动配置机制,可以省去大量繁琐的配置,同时还提供了很多常用功能的依赖库,例如Web、JPA、数据源等。

为什么选择Spring Boot

相对于其他Java开发框架,Spring Boot有以下优点:

  • 快速开发:使用Spring Boot可以快速搭建一个Web应用程序,并具有一些默认的配置,例如自动配置数据源、日志、信息视图等。
  • 易于部署:Spring Boot应用程序可以打成jar包或war包并独立运行,这样就不需要安装Tomcat或其他Web服务器。
  • 社区活跃:Spring Boot拥有庞大的社区支持,提供了丰富的文档和示例代码,方便开发者学习和使用。

非常感谢您的反馈,以下是更加详细的安装步骤:

准备工作

在开始创建Spring Boot项目之前,需要安装并配置好以下软件:

  • Java JDK:Java开发环境
  • Gradle或Maven:构建工具,用于管理项目依赖项和构建过程
  • Eclipse或IntelliJ IDEA:集成开发环境,用于编写和调试代码

安装Java JDK

首先需要安装Java JDK,可以从官方网站下载对应版本的JDK进行安装。建议选择最新的稳定版JDK。
JAVA8
在这里插入图片描述

你可以根据大多数教程先配置JAVA_HOME,然后再去系统变量path中添加%JAVA_HOME%\bin
在这里插入图片描述
也可以直接添加bin完整目录
在这里插入图片描述
查看版本

java -version

安装Gradle或Maven

接下来需要安装Gradle或Maven。Gradle是一种基于Groovy语言的构建工具,而Maven是一种基于XML的构建工具。两者都可以用于管理项目依赖项和构建过程,这里介绍其中一种。

安装Gradle

Gradle是一个构建工具,面向开发者的脚本语言是Groovy和Kotlin这里不做过多介绍

  1. 下载Gradle二进制文件:访问Gradle官网,下载最新的Gradle二进制文件。
  2. 解压缩Gradle二进制文件:将下载的Gradle二进制文件解压缩到任意目录中。
  3. 配置环境变量:将Gradle的bin目录添加到系统的环境变量PATH中,确保可以在命令行中使用Gradle。
  4. 通过 gradle -v 来查看版本。
安装Maven
  1. 下载Maven二进制文件:访问Maven官网,下载最新的Maven二进制文件。
  2. 解压缩Maven二进制文件:将下载的Maven二进制文件解压缩到任意目录中。
  3. 配置环境变量:将Maven的bin目录添加到系统的环境变量PATH中,确保可以在命令行中使用Maven。
  4. 通过 mvn -v 来查看版本。

安装Eclipse或IntelliJ IDEA

最后需要安装一个集成开发环境(IDE),如Eclipse或IntelliJ IDEA。

安装Eclipse
  1. 下载Eclipse:访问Eclipse官网,下载最新的Eclipse IDE for Java Developers。
  2. 解压缩Eclipse:将下载的Eclipse压缩包解压缩到任意目录中。
  3. 启动Eclipse:执行Eclipse根目录下的eclipse.exe文件,启动Eclipse。

以上就是安装Java JDK、Gradle或Maven、Eclipse或IntelliJ IDEA的具体步骤。如果您已经完成了上述步骤,就可以开始创建Spring Boot项目了。
非常感谢您的反馈,以下是对IntelliJ IDEA的安装教程和如何通过cmd查看Java JDK、Gradle、Maven版本的介绍:

安装IntelliJ IDEA

IntelliJ IDEA是一种常用的Java开发IDE,可以从官方网站JetBrains官网下载适合自己电脑的版本进行安装。根据操作系统选择对应的版本进行下载,然后按照向导进行安装即可。

创建Spring Boot项目

Spring Initializr是一个web应用程序,用于生成基于Spring Boot的新项目,我们可以直接访问它的网站Spring Initializr进行使用。下面将演示如何使用Spring Initializr创建一个新项目。

  1. 打开Spring Initializr网站
  2. 选择“Project”页面,选择构建工具和Spring Boot版本
  3. 选择“Dependencies”页面,添加所需依赖项
  4. 点击“Generate”按钮以生成项目框架
.
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/demo/
│   │   │       └── DemoApplication.java
│   │   └── resources/
│   │       ├── application.properties
│   │       └── static/
│   └── test/
│       ├── java/
│       │   └── com/example/demo/
│       │       └── DemoApplicationTests.java
│       └── resources/
│           └── application_test.properties
├── pom.xml
└── README.md

使用 Maven 构建 Spring Boot 项目

在这里插入图片描述

分析项目结构

使用Maven构建Spring Boot项目时,它将使用标准的Maven目录结构:

├── src
│   ├── main
│   │   ├── java            # Java源代码
│   │   └── resources       # 配置文件、资源文件等
│   └── test
│       ├── java            # 测试代码
│       └── resources       # 测试配置文件、资源文件等
└── pom.xml                  # Maven项目描述文件

pom.xml中添加spring-boot-starter-parent作为父依赖项,这将提供Spring Boot所需的所有默认设置。还可以添加其他任何需要的依赖项。例如,在本例中,我们将添加Web依赖项。

<project xmlns="http://maven.apache.org/POM/4.0.0"<!--...--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>{spring-boot-version}</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
运行应用程序

使用Maven运行Spring Boot应用程序很容易。只需要执行以下命令即可:

mvn spring-boot:run

IntelliJ IDEA maven配置
在这里插入图片描述

Whitelabel

这将启动应用程序并在控制台中输出应用程序的日志信息。当应用程序启动后,可以在Web浏览器中访问localhost:8080查看结果。
在这里插入图片描述

因为应用程序没有正确处理Web请求而导致了Whitelabel错误。按照以下步骤可以解决该问题:

  1. 确认404页面是Spring Boot的默认错误页面,表示我们的请求在Web服务中不存在。

  2. 创建一个新的控制器类,并添加相应的方法来处理Web请求。例如,在您的项目中创建一个名为HelloController的类,实现以下功能:

    • 响应/hello请求。
    • 返回“hello, springboot”。
  3. 修改HelloController类并导入所需的依赖项,如下所示:

package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HelloController {@GetMapping("/hello")@ResponseBodypublic String hello() {return "hello, springboot";}}

在这里插入图片描述

  1. 重新启动应用程序并访问http://localhost:8080/hello,您应该会看到类似于“hello, springboot”的消息。如果能正常响应,则说明问题已经解决了。

在这里插入图片描述

使用 Gradle 构建 Spring Boot 项目

Gradle是一个构建工具,面向开发者的脚本语言是Groovy和Kotlin这里不做过多介绍

分析项目结构

使用Gradle构建Spring Boot项目时,它将使用标准的Gradle目录结构:

├── build.gradle      # Gradle项目描述文件
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── settings.gradle   # Gradle项目设置文件
├── src
│   ├── main
│   │   ├── java      # Java源代码
│   │   └── resources # 配置文件、资源文件等
│   └── test
│       ├── java      # 测试代码
│       └── resources # 测试配置文件、资源文件等

build.gradle中添加spring-boot-starter作为依赖项,这将提供Spring Boot所需的所有默认设置。还可以添加其他任何需要的依赖项。例如,在本例中,我们将添加Web依赖项。

plugins {id 'java'id 'org.springframework.boot' version '{spring-boot-version}'
}dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'
}
运行应用程序

使用Gradle运行Spring Boot应用程序很容易。只需要执行以下命令即可:

./gradlew bootRun

这将启动应用程序并在控制台中输出应用程序的日志信息。当应用程序启动后,可以在Web浏览器中访问localhost:8080查看结果。

编写第一个Web应用程序

使用 Maven

创建一个名为DemoController的类,它将处理来自Web浏览器的HTTP请求,并返回一条消息。

@RestController
public class DemoController {@GetMapping("/hello")public String hello() {return "Hello World";}
}

与使用Gradle时相同,@RestController注解表示这个类将处理HTTP请求,并且@GetMapping注解表示这个方法将处理HTTP GET请求。在这种情况下,当用户访问/hello时,将调用hello()方法并返回一个字符串。

现在,重新启动应用程序并在Web浏览器中访问localhost:8080/hello,您应该看到一个包含"Hello World"消息的响应。

使用 Gradle

创建一个名为DemoController的类,它将处理来自Web浏览器的HTTP请求,并返回一条消息。

@RestController
public class DemoController {@GetMapping("/hello")public String hello() {return "Hello World";}
}

@RestController注解表示这个类将处理HTTP请求,并且@GetMapping注解表示这个方法将处理HTTP GET请求。在这种情况下,当用户访问/hello时,将调用hello()方法并返回一个字符串。

现在,重新启动应用程序并在Web浏览器中访问localhost:8080/hello,您应该看到一个包含"Hello World"消息的响应。

打包成可执行jar包

我们还可以将Spring Boot应用程序打包成可执行的jar文件。在pom.xml或build.gradle文件中添加以下插件依赖:

使用Maven:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

使用Gradle:

plugins {id 'org.springframework.boot' version '2.5.1'
}bootJar {enabled = true
}

然后执行以下命令进行打包:

  • 使用Maven:
mvn package

mvn packagemvn clean package都是Maven命令,用于构建项目并生成可执行的JAR或WAR文件。

mvn package会执行以下步骤:

  1. 编译源代码
  2. 运行单元测试
  3. 打包编译后的代码到JAR或WAR文件中

mvn clean package则会在执行以上步骤之前先执行清理操作,即删除已经生成的目标文件夹以及其他编译产生的临时文件。然后再执行上述步骤。

因此,mvn clean packagemvn package更加彻底,可以确保您得到最新的编译结果。如果您在编译过程中遇到了问题,并且认为这些问题可能与缓存数据有关,则可以尝试使用mvn clean package来解决这些问题。

总之,mvn clean package相对于mvn package会花费更多的时间,但通常会更安全、更可靠,可以防止一些不必要的错误。

  • 使用Gradle:
gradlew build

打包完成后,可以在target/目录下找到生成的可执行jar文件。要运行jar文件,请使用以下命令:

java -jar target\demo-0.0.1-SNAPSHOT.jar 

实现热部署

对于开发人员而言,热部署是一个非常有用的功能,可以避免频繁重启应用程序。Spring Boot提供了两种方式实现热部署:使用spring-boot-devtools和JRebel插件。

spring-boot-devtools

spring-boot-devtools是一个内置的开发者工具,可以自动检测代码更改并重新加载应用程序。要使用spring-boot-devtools,只需在pom.xml或build.gradle中添加以下依赖项:

使用Maven:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>
</dependencies>

使用Gradle:

dependencies {developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

启用IDEA的“Make Project Automatically”选项。在IDEA中,可以通过选中菜单栏的"File -> Settings -> Build, Execution, Deployment -> Compiler"来启用自动构建。

在IDE中启动应用程序并进行调试时,任何更改都会自动重新加载应用程序。
你需要先打开自动构建项目
在这里插入图片描述
在这里插入图片描述
Debug模式在这里插入图片描述启动后,在这里插入图片描述即可自动检测代码更改并重新加载应用程序

在这里插入图片描述

Maven的常用命令:

  1. mvn dependency:purge-local-repository:该命令将从本地存储库中删除所有已解析的依赖项和插件。这对于解决依赖项版本冲突或清理本地存储库非常有用。

  2. mvn dependency:tree:该命令将以树形结构显示项目依赖项及其传递依赖项。这对于检查依赖项版本、冲突或排除不需要的依赖项非常有用。

  3. mvn dependency:list:该命令将列出当前项目的所有依赖项。它与 mvn dependency:tree 不同之处在于,它只列出直接依赖项而不显示传递依赖项。

  4. mvn dependency:resolve:该命令将解析并下载所有项目依赖项,但不会将它们复制到本地存储库中。

  5. mvn dependency:analyze:该命令将分析项目依赖项并生成报告,其中包含未使用的依赖项和可能产生潜在问题的依赖项。

这些命令可以帮助你管理项目依赖项,解决依赖项相关问题,并确保项目的稳定性和可靠性。

总结

通过本文,您已经了解了如何使用Spring Boot创建Web应用程序。我们首先讨论了Spring Boot的基础知识,然后介绍了如何设置您的开发环境。接下来,我们演示了如何使用Maven和Gradle构建Spring Boot项目,并分析了项目的结构。最后,我们编写了一个简单的Web应用程序,并演示了如何打包成可执行jar包和实现热部署。

我们希望本文对您有所帮助,使您能够以更快、更轻松的方式创建优秀的Spring Boot Web应用程序。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Security 6.1.x 系列(2)—— 基于过滤器的基础原理及源码解析(一)

一、过滤器 Spring Security 的 Servlet 支持基于 Servlet 过滤器&#xff0c;因此首先了解过滤器的作用会很有帮助。 下图为单个 HTTP 请求的处理程序的典型分层。 客户端向应用程序发送一个请求&#xff0c;运行容器创建一个FilterChain&#xff08;过滤链&#xff09;&…

3ds Max2022安装教程(最新最详细)

目录 一.简介 二.安装步骤 网盘资源见文末 一.简介 3DS Max是由Autodesk公司开发的一款专业三维建模、动画和渲染软件&#xff0c;广泛应用于影视、游戏、建筑和工业设计等领域。 3DS Max的主要特点和功能包括&#xff1a; 三维建模&#xff1a;3DS Max提供了各种强大的建…

IO模块:钢铁安全绿色生产的智能化助手

钡铼I/O模块以其卓越的性能和可靠性&#xff0c;为钢铁行业的安全绿色生产提供了强有力的支持。这个模块拥有出色的实时监测功能&#xff0c;能够精确捕捉现场设备的工作状态&#xff0c;确保设备的正常运行。通过采用先进的预测性维护技术&#xff0c;钡铼I/O模块能够提前发现…

股权比例设计的九条生命线

股权比例设计——绝对控制线67% 【释义】一些重大事项如公司的股本变化&#xff0c;关于公司的增减资&#xff0c;修改公司章程&#xff0c; 分立/合并、变更主营项目等重大决策&#xff0c;需要2/3以上&#xff08;含2/3&#xff09;票数支持的。 股权比例设计——相对控制线…

【C语言初学者周冲刺计划】1.1用筛选法求100之内的素数

目录 1解题思路&#xff1a; 2代码如下&#xff1a; 3运行代码如图所示&#xff1a; 4总结&#xff1a; (前言周冲刺计划:周一一个习题实操&#xff0c;依次类推加一&#xff0c;望各位读者可以独自实践敲代码) 1解题思路&#xff1a; 首先了解筛选法定义&#xff1a;先把…

Python 常用内置函数详解(一):isinstance()函数----判断对象是否是类或子类

目录 一、功能二、语法和示例三、补充&#xff1a;issubclass()函数---判断是否是其他类的子类 一、功能 isinstance() 函数用于判断对象是否是类或者类型元组中任意类元素的实例。 二、语法和示例 语法结构如下&#xff1a; isinstance(object, classinfo) # ① object&a…

铭控传感数字温度变送器丨远传温度变送器在工业中的助您精准测量

秋季的森林被染成了彩色的&#xff0c;地上满是落叶和一些颗粒饱满的果实。一说起栗子&#xff0c;最令人念念不忘的当属刚出锅的糖炒栗子&#xff0c;栗子的外壳在糖类与高温作用下一点点发生非酶褐变&#xff0c;偶尔有栗子外壳破裂的声音&#xff0c;听着心都跟着颤了一下。…

实时数仓-Hologres介绍与架构

本文是向大家介绍Hologres是一款实时HSAP产品&#xff0c;隶属阿里自研大数据品牌MaxCompute&#xff0c;兼容 PostgreSQL 生态、支持MaxCompute数据直接查询&#xff0c;支持实时写入实时查询&#xff0c;实时离线联邦分析&#xff0c;低成本、高时效、快速构筑企业实时数据仓…

【项目管理】生命周期风险评估

规划阶段目标&#xff1a;识别系统的业务战略&#xff0c;以支撑系统的安全需求及安全战略 规划阶段评估重点&#xff1a;1、本阶段不需要识别资产和脆弱性&#xff1b;2、应根据被评估对象的应用对象、应用环境、业务状况、操作要求等方面识别威胁&#xff1b; 设计阶段目标…

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法&#xff0c;全称为高级加密标准&#xff08;Advanced Encryption Standard&#xff09;。它是一种分组密码&#xff0c;以128比特为一个分组进行加密&#xff0c;其密钥长度可以是128比特、192比特或256比特&#xff0c;因此可以提供不同等级的安全性…

[已解决]大数据集群CPU告警问题解决

大数据集群CPU告警问题解决 问题 6台机器的 CPU总是连续超过90% 思路 调整yarn资源 常见的是调整容器虚拟 CPU 内核 yarn.nodemanager.resource.cpu-vcores 根据集群具体的CPU核数规划 我另外调整了两个参数 最小容器虚拟 CPU 内核数量 yarn.scheduler.minimum-allocati…

QVD-2023-19300:致远M1 usertokenservice反序列化RCE漏洞复现

文章目录 致远M1 usertokenservice反序列化RCE漏洞(QVD-2023-19300)复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 致远M1 usertokenservice反序列化RCE漏洞(QVD-2023-19300)复现 0x01 前言 免责声明&…

如何处理不稳定的自动化测试?

abluecolor 在解决这个问题之前&#xff0c;请停止编写更多测试&#xff0c;因为这将花费你较高的测试维护成本。你需要尽快行动起来对不稳定的原因进行深入研究&#xff0c;找到不稳定的根因&#xff0c;并且尝试在流程、环境和代码方面做一些优化工作解决它。 MasterKindew…

Leetcode 542. 01 矩阵

542. 01 矩阵-中等 问题描述 给定一个由 0 和 1 组成的矩阵 mat &#xff0c;请输出一个大小相同的矩阵&#xff0c;其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[0,0,0],[0,1,0],[0…

利用AI Chat 将电子书自动截屏并保存成pdf文件

电子书如果要下载下来&#xff0c;无非就两种类型的方法&#xff0c;一种是从内部破解&#xff0c;通常是某些极客将软件破解成免费版&#xff0c;但是风险也大。另一种是从外部破解&#xff0c;就是截屏保存&#xff0c;然后将所有图片拼成pdf文件。 如果要将整本电子书截屏保…

【计算机网络】路由器的工作原理

文章目录 输入端口处理和基于目的地转发交换结构输出端口处理排队问题参考资料 路由器的四个组件 输入端口(input port)&#xff1a;执行物理层功能&#xff08;input port 左边方框、output port 右边方框&#xff09;、数据链路层功能&#xff08;input/output port 中间方框…

springboot+vue基于Hadoop短视频流量数据分析与可视化系统的设计与实现【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…

Qt 自定义标题栏,最小化、最大化、关闭窗口,双击最大化,鼠标拖动等效果实现

文章目录 前言效果代码.pro文件widget.hwidget.cppwidget.uititle.htitle.cpptitle.ui 前言 本次实验内容为Qt自定义标题栏&#xff0c;最小化、最大化、关闭窗口&#xff0c;双击最大化&#xff0c;鼠标拖动等界面软件的基本常规操作。 我们在做一个软件界面的时候&#xff…

NEFU数字图像处理(三)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中&#xff0c;我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分&#xff0c;背景是指和前景不相关的部分。例如&#xff0c;对于一张人物照片&#xff0c;人物就是前景&…