学透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.hqwc.cn/news/573249.html

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

相关文章

2024年springboot+vue毕业设计选题推荐

2024年&#xff0c;随着技术的发展和市场需求的变化&#xff0c;基于Spring Boot和Vue的毕业设计选题可以更加注重新兴技术的融合和解决实际问题。以下是一些建议的选题方向&#xff1a; 1. 基于Spring Boot和Vue的智能健康管理系统 - 设计并实现一个集成了运动数据、睡眠监…

L2-3浪漫侧影

“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子&#xff0c;叫“右视图”&#xff1b;女生的侧影是从她左侧看过去的样子&#xff0c;叫“左视图”。 520 这个日子还在打比赛的你&#xff0c;也就抱着一棵二叉树左看看右看看…

免费使用Claude 3!这个平台集成了所有主流的AI聊天机器人!Poe AI 2024最新版教程

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

机器人是怎么计时的(通用定时器 - 时基单元)

目录 一&#xff0c;引言 二&#xff0c;机器人的“大脑” 三&#xff0c;时基单元介绍 1&#xff0c;定时器框图 2&#xff0c;时基单元 &#xff08;1&#xff09;预分频器 &#xff08;2&#xff09;CNT计数器 &#xff08;3&#xff09;自动重装载寄存器 四&#…

vue多语言包i18n

1.安装 如果是vue2直接安装8.2.1版本&#xff0c;否则会出现版本不匹配的错误 npm install vue-i18n8.2.1 --save2.文件编辑 在src目录下创建文件 en.js export const h {system: "Background management system",loginOut:"LoginOut",LayoutSet:Layout …

后端前行Vue之路(二):模版语法之插值与指令

1.概述 Vue.js的模板语法是一种将Vue实例的数据绑定到HTML文档的方法。Vue的模板语法是一种基于HTML的扩展&#xff0c;允许开发者将Vue实例中的数据绑定到HTML元素&#xff0c;以及在HTML中使用一些简单的逻辑和指令。Vue.js 基于 HTML 的模板语法允许开发者声明式地将 DOM 绑…

【pytest、playwright】多账号同时操作

目录 方案实现思路&#xff1a; 方案一&#xff1a; 方案二&#xff1a; 方案实现思路&#xff1a; 依照上图所见&#xff0c;就知道&#xff0c;一个账号是pytest-playwright默认的环境&#xff0c;一个是 账号登录的环境 方案一&#xff1a; 直接上代码&#xff1a; imp…

搜索与图论——Dijkstra

最短路算法 稠密图与稀疏图 n为点数&#xff0c;m为边数。m远小于n的平方为稀疏图&#xff0c;m接近n的平方为稠密图。 稀疏图用邻接表存&#xff0c;稠密图用邻接矩阵存 朴素版dijkstra时间复杂度为O(n^2),对于稠密图可以ac&#xff0c;但遇到稀疏图时会TLE。 dijkstra函数实…

软考高级:软件构件标准(COBRA 、J2EE、DNA2000)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【数据结构和算法初阶(c语言)】二叉树系列oj题目图文详解

目录 1.单值二叉树 2.判断两颗二叉树是否相同 3.二叉树的前序遍历 接口了解 4.判断一棵树是不是另外一棵树的子树 5.判断一棵树是不是对称二叉树 6.二叉树遍历 1.单值二叉树 . - 力扣&#xff08;LeetCode&#xff09; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二…

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令

Docker搭建LNMP环境实战&#xff08;06&#xff09;&#xff1a;Docker及Docker-compose常用命令 此处列举了docker及docker-compose的常用命令&#xff0c;一方面可以做个了解&#xff0c;另一方面可以在需要的时候进行查阅。不一定要强行记忆&#xff0c;用多了就熟悉了。 1、…

Fastjson配置消息转换器(时间格式问题)

问题&#xff1a; 我们可以看见&#xff0c;日期的格式有点问题。 由于ArticleListVO类的createTime成员变量是Date类型&#xff0c;默认是由java的Jackson来处理&#xff0c;使用 ISO-8601 规范来处理日期时间格式。ISO-8601 是一种国际标准的日期时间表示法&#xff0c;例如&…