学透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 应用……
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

js逆向之实例某宝热卖(MD5)爬虫

目录 正常写 反爬 逆向分析 关键字搜索 打断点&分析代码 得出 sign 的由来 确定加密方式 写加密函数了 补全代码 免责声明:本文仅供技术交流学习,请勿用于其它违法行为. 正常写 还是老规矩,正常写代码,该带的都带上,我这种方法发现数据格式不完整. 应该后面也是大…

Unity3d使用Jenkins自动化打包(Windows)(二)

文章目录 前言一、Unity工程准备二、Unity调取命令行实战一实战二实战三实战四实战五 总结 前言 自动化打包的价值在于让程序员更轻松地创建和管理构建工具链&#xff0c;提高编程效率&#xff0c;将繁杂的工作碎片化&#xff0c;变成人人&#xff08;游戏行业特指策划&#x…

JavaEE:网络原理——协议(应用层+传输层)

应用层 协议就是一种约定 应用层&#xff1a;对应应用程序&#xff0c;是程序员打交道最多的一层&#xff0c;调用系统提供的网络api写出的代码都是属于应用层的。应用层有很多现成的协议&#xff0c;但程序员一般用的还是自定义协议 自定义协议要约定好哪些内容&#xff1f…

PPT没保存怎么恢复?3个方法(更新版)!

“我刚做完一个PPT&#xff0c;正准备保存的时候电脑没电自动关机了&#xff0c;打开电脑后才发现我的PPT没保存。这可怎么办&#xff1f;还有机会恢复吗&#xff1f;” 在日常办公和学习中&#xff0c;PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…

第18篇:4位二进制数到2位十进制数的转换

Q&#xff1a;上一篇我们是将4位二进制数转换为十六进制数在1个数码管显示&#xff0c;本期我们转换为2位十进制数显示在2个数码管上。 A&#xff1a;设计基本思路&#xff1a;4位二进制数转换后的十进制数小于10时&#xff0c;代表个位数的数码管显示0-9&#xff0c;代表十位…

R 药物经济学评价:Markov模型构建及markov轨迹图绘制

All models are wrong, but some are useful-Box,1976 前言 药物经济学评价中比较常用的模型包括决策树&#xff08;Decision tree&#xff09;模型、马尔科夫&#xff08;Markov&#xff09;模型、分区生存模型&#xff08;Partitioned Survival Model,PSM&#xff09;、微观…

IDEA MyBatisCodeHelper Pro最新版(持续更新)

目录 0. 你想要的0.1 包下载0.2 使用jh 1. 功能介绍2. 下载安装2.1 在idea中插件市场安装2.2 在jetbrains插件市场下载安装 3. 简单使用3.1 创建一个SpringBoot项目3.2 配置数据库3.3 一键生成实体类、mapper 0. 你想要的 0.1 包下载 测试系统&#xff1a;Windows&#xff08…

Python+selenium 初体验

PythonSelenium初体验&#xff1a;自动化网页测试与爬虫技术的新里程 引言 在Java领域久了, 偶然间接触到Pythonselenium还是感觉挺神奇的. 自己在这段时间也尝试了使用他们做一些自动化网页的测试. 觉得着实不错. 解放自己的双手, 可以做到网页自动点击,上传文件, 上传图片, …

接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送

接口自动化之 Jenkins Allure报告生成 企微消息通知推送 在jenkins上部署好项目&#xff0c;构建成功后&#xff0c;希望可以把生成的报告&#xff0c;以及结果统计发送至企微。 效果图&#xff1a; 实现如下。 1、生成allure报告 a. 首先在Jenkins插件管理中&#x…

【QT】:基本框架

基本框架 一.创建程序二.初识函数1.main2.Widget.h3.Wight.cpp4.Wight.ui5.文件名.pro 三.生成的中间文件 本系列的Qt均使用Qt Creator进行程序编写。 一.创建程序 二.初识函数 1.main 2.Widget.h 3.Wight.cpp 4.Wight.ui 此时再点击编辑&#xff0c;就看到了ui文件的本体了。…

国内IP切换软件:解锁网络世界的新钥匙

在数字化快速发展的今天&#xff0c;互联网已成为我们生活中不可或缺的一部分。然而&#xff0c;伴随着网络使用的深入&#xff0c;许多用户逐渐意识到&#xff0c;不同的IP地址可能会带来截然不同的网络体验。为了应对这一问题&#xff0c;国内IP切换软件应运而生&#xff0c;…

Python(django)之单一接口展示功能前端开发

1、代码 建立apis_manage.html 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav c…

Django Cookie和Session

Django Cookie和Session 【一】介绍 【1】起因 HTTP协议四大特性 基于请求响应模式&#xff1a;客户端发送请求&#xff0c;服务端返回响应基于TCP/IP之上&#xff1a;作用于应用层之上的协议无状态&#xff1a;HTTP协议本身不保存客户端信息短链接&#xff1a;1.0默认使用短…

重塑未来:Web3如何改变我们的数字生活

引言 随着科技的飞速发展&#xff0c;Web3已经成为数字时代的新潮流&#xff0c;其革命性的变革正在渐渐改变着我们的数字生活。本文将深入探讨Web3如何改变我们的数字生活&#xff0c;涉及其意义、应用场景、对未来的影响&#xff0c;以及我们如何适应这一变革&#xff0c;为…

Vue 二次封装组件的艺术与实践

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

[flask]执行上下文的四个全局变量

flask上下文全局变量&#xff0c;程序上下文、请求上下文、上下文钩子 -- - 夏晓旭 - 博客园 (cnblogs.com) 执行上下文 执行上下文&#xff1a;即语境&#xff0c;语意&#xff0c;在程序中可以理解为在代码执行到某一行时&#xff0c;根据之前代码所做的操作以及下文即将要…

macos下 jupyter服务安装和vscode链接密码设置 .ipynb文件

最近收到了一些后缀为.ipynb的文件&#xff0c; 这个文件就是使用jupyter编辑的&#xff0c;于是就需要安装一个jupyter服务&#xff0c; 对于最新版本的jupyter 网上很多的资料都已经过期了&#xff0c;这里以最新版本的jupyter为例。 jupyter lab安装 jupyter 这个工具包含…

基于遗传算法的智能天线最佳阵列因子计算matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于遗传算法的智能天线最佳阵列因子计算。智能天线技术利用自适应阵列处理技术改善无线通信系统的性能&#xff0c;尤其是提高接收信号质量、抑制干扰和增强定位能力。在智能…

集合系列(十六) -集合知识回顾整理

一、摘要 在 Java 中&#xff0c;集合大致可以分为两大体系&#xff0c;一个是 Collection&#xff0c;另一个是 Map&#xff0c;都位于java.util包下。 Collection &#xff1a;主要由 List、Set、Queue 接口组成&#xff0c;List 代表有序、重复的集合&#xff1b;其中 Set…

C语言:文件操作详解

什么是文件 文件是是计算机硬盘存储的数据的集合&#xff0c;它可以是文本文档&#xff0c;也可以是图片&#xff0c;程序等等。将数据存储进文件内可以很好的保存数据&#xff0c;方便程序员对文件的操作。 文件的类型 一般根据存储数据类型的不同可以分为二进制文件和文本文…