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

news2024/10/1 23:28:59

从今天开始,我们将开始学习一个新的系列,那就是在项目中用得非常广泛的一个框架 —— 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.coloradmin.cn/o/1549701.html

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

相关文章

基于Rflysim平台的无人机拦截三维比例导引算法仿真

【后厂村路钢铁侠出品】 一、Rflysim简介 RflySim是一套专为科研和教育打造的Pixhawk /PX4 和MATLAB/Simulink生态系统或工具链&#xff0c;采用基于模型设计&#xff08;Model-Based Design&#xff0c; MBD&#xff09;的思想&#xff0c;可用于无人系统的控制和安全测试。…

社交革命:Facebook如何改变我们的生活

引言 在数字化时代的浪潮中&#xff0c;社交媒体平台成为了人们日常生活不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;已经深刻地改变了我们的生活方式和社交模式。本文将探讨Facebook在社交领域的影响力&#xff0c;以及它是如何改变了我们的生活。 1. …

SQLite数据库浏览器sqlite-web

什么是 sqlite-web &#xff1f; sqlite-web是一个用 Python 编写的基于 Web 的 SQLite 数据库浏览器。 软件特点&#xff1a; 可与您现有的 SQLite 数据库配合使用&#xff0c;也可用于创建新数据库。添加或删除&#xff1a; 表格列&#xff08;支持旧版本的 SQLite&#xff…

春秋云境CVE-2023-1313

简介 cockpit在2.4.1版本之前存在任意文件上传漏洞PS&#xff1a;通过在浏览器中打开/install来运行安装 正文 来到靶场&#xff0c;首先进行弱口令爆破&#xff0c;发现没用&#xff0c;那么只好老老实实的看靶场提示 先来访问/install 访问后就可以进行登录了&#xff0c…

阿里云实时计算Flink的产品化思考与实践【上】

摘要&#xff1a;本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。内容主要为以下五部分&#xff1a; 阿里云实时计算 Flink 简介产品化思考产品化实践SQL 产品化思考及实践展望 该主题由黄鹏程和陈婧敏共同完成&#xff0c;前半程…

AJAX(二):axios 和 fetch函数发送AJAX请求、同源策略、 jsonp、CORS

一、各种发送AJAX请求 jquery基于回调函数&#xff0c;axios基于promise 1.axios发送AJAX请求!!! axios (v1.5.0) - Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 Node.js 中。 | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 服务器&#xff1a; app.…

云原生(六)、CICD - Jenkins快速入门

Jenkuns快速入门 一、CICD概述 CICD是持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;的缩写。它是软件开发中的一种流程和方法论&#xff0c;旨在通过自动化的方式频繁地将代码集成到共享存储库中&#xf…

面试题 之 webpack

1.说说你对webpack理解&#xff1f;解决什么问题&#xff1f; Webpack 是实现前端项目的模块化&#xff0c;用于现代 JavaScript 应用程序的静态模块打包工具&#xff0c;被webpack 直接引用的资源打包进 bunde.js的资源&#xff0c;当webpack 处理应用程序时,它会在内部构建一…

将jupyter notebook文件导出为pdf(简单有效)

1.打开jupyter notebook笔记&#xff1a; 2.点击file->print Preview 3.在新打开的页面右键打印 4.另存为PDF 5.保存即可 6.pdf效果 &#xff08;可能有少部分图片显示不了&#xff09; 网上也有其他方法&#xff0c;比如将其转换为.tex再转为PDF等&#xff0c;但个人觉…

Maplesoft Maple 2024数学软件中文安装 Maple2024 Mac下载

Maplesoft Maple for Mac 是一款功能强大、易于使用的数学计算软件&#xff0c;适用于各种科学计算场景。无论是教学、科研还是工程设计&#xff0c;它都能为用户提供有力的支持。 Maple2024 Mac中文破解补丁 Windows版&#xff1a;点此下载 Maple 2024 mac破解教程 打开镜像…

学习可视化比较好用的网站Apache ECharts

Apache ECharts 是一个基于 JavaScript 的开源可视化图表库&#xff0c;它提供了直观、交互丰富且可高度个性化定制的数据可视化图表。这个库最初由百度团队开源&#xff0c;并在 2018 年初捐赠给了 Apache 基金会&#xff0c;成为 ASF 的孵化级项目。在 2021 年 1 月 26 日&am…

Java常见限流用法介绍和实现

目录 一、现象 ​编辑 二、工具 ​​​​​​1、AtomicInteger,AtomicLong 原子类操作 ​​​​​​2、RedisLua ​​​​​​3、Google Guava的RateLimiter 1&#xff09; 使用 2&#xff09; Demo 3&#xff09; 优化demo 4、阿里开源的Sentinel 三、算法 1、计数…

光伏百科|分布式光伏电站如何开展运维管理工作?

随着经济的不断发展和生活水平的日益提高&#xff0c;节能环保已经成为全社会的责任和共识&#xff0c;分布式光伏电站作为清洁能源走进了千家万户。然而&#xff0c;在分布式光伏电站运行期间&#xff0c;面临监管困难、系统繁多、火灾隐患和运维不当等困难&#xff0c;该如何…

gopher伪协议

基础知识 基本格式 基本格式&#xff1a;URL:gopher://<host>:<port>/<gopher-path>web也需要加端口号80gophert协议默认端口为70gopheri请求不转发第一个字符 get请求 问号&#xff08;&#xff1f;)需要转码为URL编码&#xff0c;也就是%3f回车换行要变…

Patchwork包使用教程,R语言快速组合拼接图片

R语言如何拼接多幅图片&#xff1f; 今天分享的笔记带你领略R语言Patchwork包独特的魅力&#xff0c;patchwork是一个非常流行的用于拼接 ggplot2 图形的包&#xff0c;以一种简单的方式对图形进行排列和组合&#xff0c;不论多复杂的组合图形&#xff0c;都能确保图形之间正确…

社交革命:Facebook如何塑造数字社交的未来

引言 在当今数字化时代&#xff0c;社交媒体已成为人们生活的核心&#xff0c;而Facebook作为其中的领军者&#xff0c;一直在塑造着数字社交的未来。本文将深入探讨Facebook在数字社交领域的地位、影响力以及对未来社交的塑造作用&#xff0c;为读者揭示这场社交革命如何由Fa…

Windows直接运行python程序

Windows直接运行python程序 一、新建bat脚本二、新建vbs脚本 一、新建bat脚本 新建bat批处理脚本&#xff0c;写入以下内容 echo off call conda activate pytorch python app.pyecho off&#xff1a;在此语句后所有运行的命令都不显示命令行本身&#xff0c;但是本身的指令是…

【软件开发】给Ubuntu 18.04虚拟机安装最新的Python 3.12.2

一、前言 笔者在Windows 11主机上安装有Ubuntu 18.04虚拟机&#xff08;使用虚拟化平台Oracle VM VirtualBox&#xff09;&#xff0c;在Python3.6的使用过程中遇到了问题&#xff0c;决定安装Python 3.12.2&#xff0c;在此记录安装过程。 二、安装过程&#xff08;在Ubuntu…

鸿蒙HarmonyOS应用开发之使用Node-API实现跨语言交互开发流程

使用Node-API实现跨语言交互&#xff0c;首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧&#xff1a;实现C方法的调用。代码比较简单&#xff0c;import一个对应的so库后&#xff0c;即可调用C方法。 Native侧&#xff1a;.cpp文件&#xff0c;实现模…

持续集成与版本控制的相关概念

目录 一、持续集成 1.1 持续集成基本概念 1.1.1 持续集成的含义 1.1.1.1 持续集成流程是依赖产品版本迭代和版本分支而产生的 1.1.1.2 持续集成流程中包含的内容 1.1.2 传统打包模式说明 1.1.2.1 传统打包模式概述 1.1.2.2 传统打包模式问题 1.1.3 持续集成模式 1.1.…