一文让你认识什么是springboot(创建第一个 SpringBoot 程序)

news2024/9/20 0:58:55

文章目录

  • 前言
  • 1. 环境准备
  • 2. Maven
  • 3. 第一个 SpringBoot 程序
    • 3.1 SpringBoot 介绍
    • 3.2 SpringBoot 项⽬创建
      • 3.2.1 使用 IDEA 创建
      • 3.2.2 网页版创建(了解)
    • 3.3 项目代码和目录介绍
      • 3.3.1 观察pom⽂件
      • 3.3.2 父工程
      • 3.3.3 目录介绍
    • 3.4 运行项目
    • 3.5 输出 Hello world
    • 3.6 Web服务器
    • 3.7 请求响应流程分析
  • 4. SpringBoot的优点
  • 总结


前言

本文从零开始讲解 SpringBoot, 让堵住了解Maven,并配置国内源, 使⽤SpringBoot创建⼀个项⽬, 输出HelloWorld. 包括但不限于SpringBoot项目的创建, 项目代码及其目录介绍, 如何运行项目等重点知识.

关注收藏, 开始学习吧🧐


1. 环境准备

要更好更快捷的创建一个 SpringBoot 项目, 我们需要下载准备一个专业版的 IDEA, 别害怕不会收钱的, 只要是学生, 我们都可以免费申请使用权. 具体操作步骤, 在我的另一篇文章中, 指路 -> 白嫖专业版IDEA

文章内容比较详细, 在这里就不再进行讲解了, 完成之后, 就可以进行我们的下一部操作了.

当然如果不想使用专业版 IDEA 的话, 也可以使用社区版本的 IDEA, 不过专业版创建SpringBoot项目是比较方便的.

2. Maven

由于现在 SpringBoot 项目大多数都是由 Maven 来进行管理的, 所以在学习创建 SpringBoot 前, 我们要先了解一下什么是 Maven, 请参考该文章 -> 什么是 Maven.

3. 第一个 SpringBoot 程序

3.1 SpringBoot 介绍

在学习SpringBoot之前, 我们先来认识⼀下Spring
我们看下Spring官⽅(https://spring.io/)的介绍

在这里插入图片描述
可以看到, Spring让Java程序更加快速, 简单和安全. Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。

Spring官⽅提供了很多开源的项⽬, 覆盖范围从Web开发到⼤数据, Spring发展到了今天, 已经形成了自己的⽣态圈. 我们在开发时, 也倾向于使⽤Spring官⽅提供的技术, 来解决对应的问题.

在这里插入图片描述
这些项⽬都是基于Spring Framework来进⾏开发的, 但是Spring Framework存在配置多, 入门难的问题, Spring 也意识到了这个问题, 为了简化开发者的使⽤, 从而创造性的推出了SpringBoot.

接下来我们看下什么是Spring Boot.

Spring Boot 的诞⽣是为了简化 Spring 程序开发的。

Spring Boot 翻译⼀下就是 Spring 脚手架,什么是脚手架呢?如下图所示:

在这里插入图片描述
盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝土、⽅便墙⾯抹灰,装饰和粉刷的,简单来说,就是使⽤脚⼿架可以更快速的盖房子.

而 Spring Boot 就是 Spring 框架的脚⼿架,它是为了快速开发 Spring 框架⽽诞⽣的.

SpringBoot 和 Spring 的形象对比

以前铺路是这样的:

在这里插入图片描述
改造之后的效率是这样的:

在这里插入图片描述
或者是这样的:
在这里插入图片描述
可以看到,每次技术的诞⽣和改进相⽐于之前的效率会有⼀个质的提升,⽽ Spring Boot 相⽐于 Spring 也是如此.

3.2 SpringBoot 项⽬创建

3.2.1 使用 IDEA 创建

我们本篇文章中使用的是专业版 IDEA, 所有版本都通用的, 只是可能界面不同.

创建 SpringBoot 项目

在这里插入图片描述
进入到该界面后, 我们选择 New Project. 进入到以下页面后, 开始创建项目.

在这里插入图片描述

点击 Next 进入下一步.

在这里插入图片描述
点击 Create 就完成 Spring Boot 的项⽬创建了.

注意事项

第⼀次打开 Spring Boot 项⽬需要加载很久,因为当前 Spring Boot 框架并没有在⾃⼰的本地仓库.

为了加速 Spring Boot 项⽬的下载,在打开项⽬之前,请先确认自己的 Maven 已经配置为国内源, 详情请看 Maven 配置文章.

3.2.2 网页版创建(了解)

不使⽤ Idea 也可以创建 Spring Boot 项⽬,我们可以使⽤ Spring 官⽅提供的网页版来创建 Spring Boot 项⽬。
网页版创建项⽬先访问:https://start.spring.io,如下图所示:

在这里插入图片描述

补充: Idea创建项⽬时, 显⽰的界⾯, 就是来⾃于这个⽹站, 所以⽹络不好的情况下, 这个界⾯也会打不开.

点击⽣成按钮会下载⼀个 Spring Boot 的 zip 包,解压之后, 使用Idea打开, Spring Boot 项⽬就算创建成功了.

3.3 项目代码和目录介绍

3.3.1 观察pom⽂件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.example</groupId>
    <artifactId>springboot-create</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-create</name>
    <description>springboot-create</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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

</project>

pom.xml⽂件⾥的具体信息, 不需要过度关注, 我们主要看 标签⾥⾯的内容

pom⽂件中, 引⼊了两个依赖

  • spring-boot-starter-web:包含了web应⽤开发所需要的常⻅依赖
  • spring-boot-starter-test:包含了单元测试所需要的常⻅依赖

3.3.2 父工程

但是我们发现, 这个依赖没有指定具体的版本号, 但我们的 jar 包也正常引⼊到项⽬中了.并且查看的话, 是有版本号的.

在这里插入图片描述
为什么没有指定 , 程序也可以正常运⾏呢?

因为每⼀个SpringBoot⼯程,都有⼀个⽗⼯程. 依赖的版本号,在⽗⼯程中统⼀管理.

父工程指定版本号后, 就会⾃动引⼊和所指定版本对应的依赖, 创建的SpringBoot项⽬, 会继承SpringBoot⽗⼯程

在这里插入图片描述

3.3.3 目录介绍

在这里插入图片描述
我们可以将以上选中的四个文件全部删掉, 对我们没有任何影响.

在这里插入图片描述
Spring Boot 项⽬有两个主要的⽬录:

  • src/main/java: Java 源代码
  • src/main/resources: 为静态资源或配置⽂件:
    • /static:静态资源⽂件夹, ⽐如js, css, html等静态⽂件, 不需要服务器数据进⾏绑定的
      ⻚⾯
    • /templates:模版资源⽂件夹, 主要存放动态模板⽂件, ⽐如JSP, Freemarker, Thymeleaf等需
      要服务器动态渲染数据的⽂件
  • src/test/java: 测试代码源代码
  • target: 编译后的⽂件路径
  • pom.xml: maven 配置⽂件

3.4 运行项目

在这里插入图片描述
点击启动类的 main ⽅法就可以运⾏ Spring Boot 项⽬了,启动成功如下图所⽰:

在这里插入图片描述

3.5 输出 Hello world

在Java EE学习中, 更多是围绕着如何使⽤Java来进⾏web开发.

在之前, 我们更多学习的是 Java 基础, 是没办法直接和浏览器进⾏互动的. 所以接下来我们要⽤ SpringBoot 来实现和浏览器及⽤⼾的交互。

在创建的项⽬包路径下创建 UserController ⽂件,实现代码如下:

package org.example.springbootcreate;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @RequestMapping("/sayHi")
    public String sayHi(){
        return "hello,Spring";
    }
}

重新启动项⽬,访问 http://127.0.0.1:8080/sayHi 最终效果如下:

在这里插入图片描述

3.6 Web服务器

浏览器和服务器两端进⾏数据交互, 使⽤的就是HTTP协议

在这里插入图片描述
还不知道HTTP协议是什么? 想进一步了解的, 可以阅读这篇文章. HTTP协议详解.

HTTP 协议就是 HTTP 客⼾端和 HTTP 服务器之间的交互数据
的格式.

Web 服务器就是对HTTP协议进⾏封装, 程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议规则),让Web开发更加便捷, 所以Web服务器也被称为WWW服务器, HTTP服务器, 主要功能是提供⽹上信息浏览服务.

常⻅的Web服务器有: Apache,Nginx, IIS, Tomcat, Jboss等

SpringBoot 内置了 Tomcat 服务器, ⽆需配置即可直接运⾏

在这里插入图片描述

Tocmat默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080

3.7 请求响应流程分析

浏览器输⼊URL之后, 发起请求, 就和服务器之间建⽴了连接

服务器:
在这里插入图片描述
浏览器

  • 输⼊⽹址:http://127.0.0.1:8080/hello

    • 通过IP地址127.0.0.1定位到⽹络上的⼀台计算机, 127.0.0.1就是本机
    • 通过端⼝号8080找到计算机上对应的进程 , 也就是在本地计算机中找到正在运⾏的8080端⼝的程序
    • /user/sayhi是请求资源位置
      • 资源:对计算机⽽⾔资源就是数据
      • web资源:通过⽹络可以访问到的资源(通常是指存放在服务器上的数据)
  • http://127.0.0.1:8080/user/sayhi,就是向本地计算机中的8080端⼝程序,获取资源位置是/user/sayhi的数据, 在服务器找/hello位置的资源数据,发给浏览器

服务器:

  • 接收到浏览器发送的信息(如:/user/sayhi)
  • 在服务器上找到/user/sayhi的资源
  • 把资源发送给浏览器

4. SpringBoot的优点

Spring Boot 是为了快速开发 Spring ⽽诞⽣的, Spring Boot 具备:

  • Spring Boot 提供了启动添加依赖的功能, 可以快速集成框架.
  • 内置web服务器,⽆需配置 Tomcat 等 Web服务器,直接运⾏和部署程序.
  • 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发.
  • ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点.

Spring Boot 可使⽤ Idea 或⽹⻚创建,它的设计思想是约定⼤于配置,类上标注 @SpringBootApplication 就可以启动 Spring Boot 项⽬了.


总结

✨ 想了解更多知识, 请持续关注博主, 本人会不断更新学习记录, 跟随我一起不断学习.
✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习.

再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!

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

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

相关文章

STM32——串口

串口发送/接收函数&#xff1a; HAL_UART_Transmit(); 串口发送数据&#xff0c;使用超时管理机制 HAL_UART_Receive(); 串口接收数据&#xff0c;使用超时管理机制 HAL_UART_Transmit_IT(); 串口中断模式发送 HAL_UART_Receive_IT(); 串口中断模式接收 HAL_UART_Tran…

线上业务优化之案例实战

本文是我从业多年开发生涯中针对线上业务的处理经验总结而来&#xff0c;这些业务或多或少相信大家都遇到过&#xff0c;因此在这里分享给大家&#xff0c;大家也可以看看是不是遇到过类似场景。本文大纲如下&#xff0c; 后台上传文件 线上后台项目有一个消息推送的功能&#…

thinkphp 使用array_reduce 处理返回的数据格式

我想要的效果&#xff1a; 不使用array_reduce 的效果 &#xff1a; 代码&#xff1a; public function teamList($userId,$good_id){$nowbuyers $this->order->where(good_id,$good_id)->count();$data GroupTotalOrder::alias(t_order)->where(merchant_Id,$u…

每日一题 2454. 下一个更大元素 IV(困难,单调栈)

首先考虑第一大整数问题维护一个单调栈&#xff0c;遍历 nums&#xff0c;弹出栈中所有小于 nums[i] 的数&#xff0c;而 nums[i] 就是这些被弹出的数的第一大整数&#xff0c;知道栈为空或者栈顶元素比 nums[i] 大&#xff0c;证明如下&#xff0c;首先由于是遍历&#xff0c;…

Knowledge Graph知识图谱—9. Knowledge Modeling

9. Knowledge Modeling & Ontology Engineering How should the knowledge in a KG be modeled? – Which classes of entities do we have? – Which relations connect them? – Which constraints hold for them? → these questions are defined in the ontology …

【智能家居】九、停车场车牌识别功能点(回调、解耦)

一、翔云 人工智能开放平台&#xff08;车牌识别&#xff09; 二、cJSON 库 三、实现代码 四、回调函数 五、人脸识别和车牌识别获取数据的区别 六、异步网络请求和同步网络请求的区别 七、解耦 一、翔云 人工智能开放平台&#xff08;车牌识别&#xff09; 翔云 人工智能开放…

vxe-table 右键菜单+权限控制(v3)

1.menu-config 是用于配置右键菜单的属性。通过 menu-config 属性&#xff0c;定义右键菜单的内容、显示方式和样式。 通过 menu-config 属性配置了右键菜单&#xff0c;其中的 options 属性定义了右键菜单的选项。用户在表格中右键点击时&#xff0c;将会弹出包含这些选项的自…

数据库系统原理与实践 笔记 #12

文章目录 数据库系统原理与实践 笔记 #12事务管理和并发控制与恢复(续)并发控制SQL-92中的并发级别基于锁的协议基于锁的协议的隐患锁的授予封锁协议两阶段封锁协议多粒度粒度层次的例子意向锁类型相容性矩阵多粒度封锁模式基于时间戳的协议基于时间戳协议的正确性基于有效性检…

mysql:用SHOW CREATE TABLE tbl_name查看创建表的SQL语句

https://dev.mysql.com/doc/refman/8.2/en/show-create-table.html 可以用SHOW CREATE TABLE tbl_name查看创建表的SQL语句。 例如&#xff0c;SHOW CREATE TABLE test_table;表示查询创建test_table表的SQL语句&#xff1a;

关于电动机智能综合保护器在煤矿内的应用分析-安科瑞 蒋静

摘要 &#xff1a;介绍了矿用电动机智能综合保护器系统的总体结构&#xff0c;采用直接将交流信号整流、滤波、调理、采样的方式变为微控制器能够识别的直流信号&#xff0c;通过对微控制器采集到的直流信号编程判断来实现对电动机的相关保护控制、故障显示与报警以及与上位机的…

Jmeter性能测试:ForEach控制器的用法解析(含视频讲解)

引言 最近我在进行JMeter性能测试时遇到了一些问题&#xff0c;特别是在使用ForEach控制器时感到有点棘手。 但是经过不断地摸索和实践&#xff0c;终于成功地掌握了这个神奇的工具&#xff0c;提高了我的测试效率。因此&#xff0c;今天我想和大家分享我的经验&#xff0c;让…

优思学院|如何建立公司运营指标体系?如何推行六西格玛改进运营指标?

关键绩效指标 (KPI) 是测量您团队或组织朝重要商业目标进展表现如何的量化指标&#xff0c;组织会在多个层面使用 KPI&#xff0c;这视乎您想要追踪何指标而定&#xff0c;您可以设定全组织的、特定团队的、或甚至是个人 KPI。 良好的KPI能让公司管理者掌握组织的营运是否进度…

【(较大规模)作业车间调度JSP】通过OR-Tools的区间变量建模求解的效率对比实验

文章目录 问题描述Python调用OR-Tools建模求解&#xff08;实验一&#xff09;1. 声明问题的模型2. 创建区间变量3. 创建约束条件4. 求解模型5. 基于 plotly 展示甘特图 不同场景下的求解效率对比实验二&#xff1a;工件的工序数有差异实验三&#xff1a;消除工件的加工时长差异…

php实现个性化域名(短网址)和个性化登录模版的解决方案

在PHP中&#xff0c;个性化域名通常指的是根据用户或业务需求动态生成具有特定规律的子域名。实现个性化域名的方法主要依赖于服务器配置和路由规则。下面是一些基本的步骤和考虑因素&#xff0c;以帮助你了解如何个性化域名&#xff0c;并了解这样做的好处。 如何实现个性化域…

Cohort Analysis是什么

Cohort Analysis 什么是Cohort Analysis Cohort Analysis 可以翻译成 群体分析 或 分组分析&#xff0c;其实是一种通过细分来研究数据的方法。如下表就是一个从每日新增维度细分的 Cohort Analysis 表格。 第一列是分组的维度&#xff0c;下表以用户新增的日期作为细分的维…

Docker安装与使用

Docker 1.初识Docker Docker如何解决大型项目依赖关系复杂&#xff0c;不同组件依赖的兼容性问题&#xff1f; Docker允许开发中将应用、依赖、函数库、配置一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离 Docker…

“未来医疗揭秘:机器学习+多组学数据,开启生物医学新纪元“

在当今的数字化时代&#xff0c;科技正在不断地改变着我们的生活&#xff0c;同时也为医疗领域带来了巨大的变革。随着机器学习的快速发展&#xff0c;以及多组学数据在生物医学中的应用&#xff0c;我们正开启一个全新的医疗纪元。这个纪元以精准诊断、个性化治疗和高效康复为…

体验即营销,如何用体验家实现高效的线索细分?

什么是线索细分&#xff1f; 线索细分&#xff0c;指的是将收集而来的线索根据用户行为、特征等信息划分成若干个小组&#xff0c;从而方便市场、运营等部门开展更精细化的营销动作。 为什么要进行线索细分&#xff1f; 不同的客户为企业带来的价值不同。许多情况下&#xff0c…

智能无人零售:革新零售消费体验的未来

智能无人零售&#xff1a;革新零售消费体验的未来 在当今数字化时代&#xff0c;智能无人零售正以惊人的速度改变着我们的购物方式和消费体验。这一新兴领域的发展&#xff0c;为消费者带来了前所未有的便利和个性化选择。 智能无人零售是指利用先进的智能技术和自动化系统&…

(十六)Flask之蓝图

蓝图 Flask蓝图&#xff08;Blueprint&#xff09;是Flask框架中用于组织和管理路由、视图函数以及静态文件的一种机制。它提供了一种将应用程序拆分为更小、可重用组件的方式&#xff0c;使得项目结构更清晰&#xff0c;代码更易于维护。 使用Flask蓝图&#xff0c;可以将相…