学透Spring Boot — 创建一个简单Web应用

从今天开始,我们将开始学习一个新的系列,那就是在项目中用得非常广泛的一个框架 —— Spring Boot,我们会循序渐进地介绍 Spring Boot 的方方面面,包括理论和实战,也会介绍和Spring Boot一些热点面试题。

概论

本文是Spring Boot 专题的第一篇,我们会用最快捷、最简单的方式动手搭建一个 Spring Boot 的Web应用。

生成项目

生成一个 Spring Boot 项目有很多种方式,如果你不嫌麻烦,你完全可以手动创建一个一般目录结构的 Web 项目,然后在 pom.xml 中引入 Spring Boot 相关的依赖,但是这非常枯燥无味,所以我们一般不会这么做。

抛开手动创建项目,有两种方式自动创建一个 Spring Boot 项目:

  1. 使用 Spring 官方提供的 Spring Initializr 网页工具
    在这里插入图片描述

  2. 使用我们的开发工具 IDEA
    在这里插入图片描述

其实 两种方式本质都是一样,从IDEA的截图我们也可以看出 IDEA使用的也是 Spring Initializr 创建项目的

相关的依赖我们可以在界面中选择,也可以随后在 pom.xml 中引入。

为了更容易理解,依赖这里我们什么都不选,在后面具体的模块中再引入。

项目结构和配置

上面的项目创建后,Spring Boot 相关的依赖下载需要一些时间。
在这里插入图片描述
因为我们第一步中选择的是用 Maven 构建项目,所以可以看到我们的项目是一个标准的 Maven 项目:
在这里插入图片描述

我们可以浏览一下自动生成的 Maven 配置文件,里面的内容非常简单。
首先是 Maven 项目中的父级项目配置:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePath/>
</parent>

什么是父级项目配置,我们后面的章节会深入学习。

除了 Maven 配置,在 resources 目录下还生成了一个 Spring Boot 的主配置文件,里面只有一行配置:
在这里插入图片描述
可以看到,自动生成的 Spring Boot 项目结构和配置都非常的简洁

应用配置

自动生成的项目给我们生成了一个应用的启动类:

@SpringBootApplication
public class SkybootApplication {public static void main(String[] args) {SpringApplication.run(SkybootApplication.class, args);}
}

这个类被一个Spring Boot 最最核心的注解 @SpringBootApplication 修饰,表示这个类作为 Spring Boot 应用程序的入口点。
可以说这里是Spring Boot 长城的起点
这个类的main方法只有一行代码,运行这个main方法,就可以启动我们的 Web 项目。

我们先不用做任何配置,就可以启动项目了!运行SkybootApplication.java
日志中可以看到,项目启动了一个Tomcat服务器,使用的端口号是默认的8080:

TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''
SkybootApplication : Started SkybootApplication in 1.847 seconds (process running for 2.486)

访问 localhost:8080 就可以进入下面的页面了:
在这里插入图片描述

显示404空白页报错是因为我们没有配置任何控制器和页面。

配置 Spring MVC

接下来我们使用Spring MVC,定义一个控制器,我们需要引入相关的依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

Spring Boot 中各种starter也是我们后面学习的内容之一。

定义一个 Controller,里面定义了一个REST API:

@RestController
public class SkyController {@GetMapping("/hello")public String hello(){return "<h1>兰亭序咖啡的Spring Boot专栏</h1>";}
}

在这里插入图片描述

总结

到这里,我们快速搭建了一个最简单的基于 Spring Boot 的Web 应用。
回头看看我们做了什么:

  • 用 Spring Initializr 自动创建了一个Spring Boot 项目
  • 引入了Spring MVC的依赖(3行配置)
  • 编写了一个控制器(5行代码)

然后,我们运行启动类 SkybootApplication.java 就成功把一个Web项目创建并运行起来了。

只有区区几行配置和代码!
想想以前没有 Spring Boot 时,我们要配置一个 Web 项目需要做很多枯燥乏味的工作:

  • 创建项目结构
  • 引入各种依赖
  • 安装和配置Tomcat
  • 打包应用,部署到Tomcat中,启动Tomcat
  • ……

一顿操作下来,一两天过去了,再对比我们Spring Boot 搭建一个 Web 应用……
在这里插入图片描述

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

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

相关文章

C#学生信息成绩管理系统

一、系统功能描述 本系统包括两类用户&#xff1a;学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息&#xff1b;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等&#xff0c;而学生则可以通过系统来选择课…

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵

基于Givens旋转完成QR分解进而求解实矩阵的逆矩阵 目录 前言 一、Givens旋转简介 二、Givens旋转解释 三、Givens旋转进行QR分解 四、Givens旋转进行QR分解数值计算例子 五、求逆矩阵 六、MATLAB仿真 七、参考资料 总结 前言 在进行QR分解时&#xff0c;HouseHolder变换…

YOLOv8项目实践——目标检测、实例分割、姿态估计、目标追踪算法原理及模型部署(Python实现带界面)

简介 Ultralytics YOLOv8是一种前沿的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它在前代YOLO版本的成功基础上进行了进一步的创新&#xff0c;引入了全新的特性和改进&#xff0c;以进一步提升性能和灵活性。作为一个高速、精准且易于操作的设计&#xff0c;YO…

量化交易入门(二十三)什么是MTM指标,原理是什么

MTM指标全称是Momentum指标,翻译为动量指标。它用来衡量市场价格在一定时间内上涨或下跌的幅度,属于趋势型指标。其计算公式是: MTM(N) 当前收盘价 - N日前的收盘价 其中N表示统计的周期数,常用参数有6日、12日和24日。 MTM指标的应用要点如下: 判断趋势强弱:MTM数值越大,表…

uniapp 微信小程序 canvas 手写板文字重复倾斜水印

核心逻辑 先将坐标系中心点通过ctx.translate(canvasw / 2, canvash / 2) 平移到canvas 中心&#xff0c;再旋转设置水印 假如不 translate 直接旋转&#xff0c;则此时的旋转中心为左上角原点&#xff0c;此时旋转示意如图所示 当translate到中心点之后再旋转&#xff0c;此…

P8649 [蓝桥杯 2017 省 B] k 倍区间:做题笔记

目录 思路 代码思路 代码 推荐 P8649 [蓝桥杯 2017 省 B] k 倍区间 思路 额嗯&#xff0c;这道题我刚上来是想到了前缀和&#xff0c;但是还要判断每个子序列&#xff0c;我就两层for嵌套&#xff0c;暴力解了题。就是我知道暴力肯定过不了但是写不出来其他的[留下了苦…

【ESP32S3 Sense接入语音识别+MiniMax模型对话】

1. 前言 围绕ESP32S3 Sense接入语音识别MiniMax模型对话展开&#xff0c;首先串口输入“1”字符&#xff0c;随后麦克风采集2s声音数据&#xff0c;对接百度在线语音识别&#xff0c;将返回文本结果丢入MiniMax模型&#xff0c;进而返回第二次结果文本&#xff0c;实现语言对话…

libVLC 动态视频壁纸

在 Windows 上&#xff0c;你可能需要使用 Windows API 来设置壁纸&#xff0c;而在 Linux 上&#xff0c;你可能需要使用某种桌面环境特有的方法。在 macOS 上&#xff0c;这一功能可能受到限制。 效果图如下所示&#xff1a; 以下是一个简单的示例&#xff0c;说明了如何在 …

[Qt] QString::fromLocal8Bit 的使用误区

QString::fromLocal8Bit 是一个平台相关的函数。默认情况下在 Windows 下 就是 gbk 转 utf-8 ,在 Linux就应该是无事发生。因为Linux平台默认的编码方式就是 utf-8 可以通过 void QTextCodec::setCodecForLocale(QTextCodec *c)来修改 Qt默认的编码方式。如下 第一输出乱码的…

vue组件如何使用?

今天我随便试两个组件 第一个轮播图 在minn.js 引入 import { createApp } from vue; import { Swipe, SwipeItem } from vant; const app createApp(); app.use(Swipe); app.use(SwipeItem); <van-swipe class"my-swipe" :autoplay"3000" indica…

python学习15:python中的input语句

python中的input语句 我们前面学习过print语句&#xff0c;可以将内容输出到屏幕上&#xff1b;在python中&#xff0c;与之对应的还有一个input语句&#xff0c;用来获取键盘输入。 数据输出&#xff1a;print 数据输入&#xff1a;input 使用上也很简单&#xff1a; 使用inp…

视图的作用

目录 视图的作用 创建视图 为 scott 分配创建视图的权限 查询视图 复杂视图的创建 视图更新的限制问题 更新视图中数据的部门编号&#xff08;视图的存在条件&#xff09; 限制通过视图修改数据表内容 创建只读的视图 复杂视图创建 oracle从入门到总裁:​​​​​​h…

快速创建zookeeper集群

先说明&#xff0c;我很穷&#xff01;&#xff01;&#xff0c;开不了多个虚拟机&#xff0c;zookeeper集群的3个节点都放在同一个虚拟机&#xff0c;所以搭建是一个伪集群&#xff0c;因为一个服务器挂机&#xff0c;所有节点都会停止。工作实际情况安装到三个服务器&#xf…

H5抓包——Android 使用电脑浏览器 DevTools调试WebView

H5抓包——Android 使用电脑浏览器 DevTools调试WebView 一、使用步骤 1、电脑通过数据线连接手机&#xff0c;开启USB调试&#xff08;打开手机开发者选项&#xff09; 2、打开待调试的H5 App&#xff0c;进入H5界面 3、打开电脑浏览器&#xff0c;调试界面入口 如果用ed…

第十一章:位运算符与位运算

文章目录 第十一章&#xff1a;位运算符与位运算1.按位与运算&#xff1a;&2.按位或运算&#xff1a;|3.按位异或运算&#xff1a;^4.取反运算符&#xff1a;~5.左移运算符&#xff1a;<<6.右移运算符&#xff1a;>>总结 第十一章&#xff1a;位运算符与位运算…

免费SSL证书和付费SSL证书的区别点

背景&#xff1a; 在了解免费SSL证书和付费SSL证书的区别之前&#xff0c;先带大家了解一下SSL证书的概念和作用。 SSL证书的概念&#xff1a; SSL证书就是基于http超文本传输协议的延伸&#xff0c;在http访问的基础上增加了一个文本传输加密的协议&#xff0c;由于http是明…

【爬虫基础】第6讲 opener的使用

在爬虫中&#xff0c;opener是一个用来发送HTTP请求的对象。它可以用来模拟浏览器发送请求&#xff0c;包括设置请求头、处理Cookie等操作。使用opener可以实现一些高级功能&#xff0c;如模拟登录、处理验证码等。 方法1&#xff1a; from urllib.request import Request,bu…

ARMday7作业

实现三个按键的中断&#xff0c;现象和代码 do_ipr.c #include "stm32mp1xx_gic.h" #include "stm32mp1xx_exti.h" extern void printf(const char *fmt, ...); unsigned int i 0; void do_irq(void) {//获取要处理的中断的中断号unsigned int irqnoGI…

StableDiffusion Web UI开启FP8,极大节约显存

升级了Pytorch后&#xff0c;StableDiffusion最新版本就可以有使用FP8的基础了&#xff0c;因此把秋叶的LINUX包也升级到了最新的版本。 升级Pytorch参考我的升级记录&#xff1a; ComfyUI SDWebUI升级pytorch随记-CSDN博客 然后下一步就是如何开启FP8了。与ComfyUI不同&…

Spring boot2.X 配置https

背景 最近项目组说要将 http 升级成 https 访问&#xff0c;证书也给到我们这边了&#xff0c;当然我们这边用的是个二级域名&#xff0c;采用的是通配符访问的方式&#xff0c;比如一级域名是这样&#xff08;com.chinaunicom.cn&#xff09;&#xff0c;我们的则是&#xff0…