SpringBoot:SpringBoot简介与快速入门(1)

news2024/11/15 11:12:03

SpringBoot快速入门

  • 1. SpringBoot简介
  • 2. SpringBoot快速入门
    • 2.1 创建SpringBoot项目(必须联网,要不然创建失败,在模块3会讲到原因)
    • 2.2 编写对应的Controller类
    • 2.3 启动测试
  • 3. Spring官网构建工程
  • 4. SpringBoot工程快速启动
    • 4.1 为什么要快速启动?
    • 4.2 SpringBoot项目打包
    • 4.3 SpringBoot项目启动
  • 5. SpringBoot概述
    • 5.1 起步依赖
    • 5.2 程序启动
    • 5.3 切换web服务器

1. SpringBoot简介

SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程

使用了 Spring 框架目的是简化开发。而 SpringBoot 又是对 Spring 开发进行简化。使用Spring时,需要进行如下配置:

  1. 创建工程,并在pom.xml中引入依赖坐标;
  2. 编写web3.0的配置类;
  3. 编写Spring、SpringMVC配置类
  4. 编写Controller类

使用SpringBoot可以直接不用配置(1)-(3),只需要编写对应的Controller就可以了,就是这么简单。

2. SpringBoot快速入门

2.1 创建SpringBoot项目(必须联网,要不然创建失败,在模块3会讲到原因)

  • 选择New Module创建新模块
    在这里插入图片描述

  • 选择 Spring Initializr ,用来创建 SpringBoot 工程,选择 Spring Initializr 来快速构建 SpringBoot 工程。而在 Module SDK 这一项选择安装的 JDK 版本。
    在这里插入图片描述

  • SpringBoot 工程进行相关的设置,必须按照图中的进行相关设置。
    在这里插入图片描述

  • 选中 Web,然后勾选 Spring Web。由于需要开发一个 web 程序,使用到了 SpringMVC 技术,所以按照下图红框进行勾选(选择Spring Boot版本的时候要特别注意,2.x.x对应的Java JDK版本为1.8, 3.x.x版本对应Java JDK为17
    在这里插入图片描述

  • 下图界面不需要任何修改,直接点击 Finish 完成 SpringBoot 工程的构建
    在这里插入图片描述

  • 项目创建结果如下
    在这里插入图片描述

注意:

  1. 在创建好的工程中不需要创建配置类

  2. 创建好的项目会自动生成其他的一些文件,而这些文件目前没有任何作用,所以可以将这些文件删除。

    可以删除的目录和文件如下:

    • .mvn
    • .gitignore
    • HELP.md
    • mvnw
    • mvnw.cmd

2.2 编写对应的Controller类

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

/**
 * @Author Mr.Lu
 * @Date 2023/2/24 21:47
 * @ClassName BookController
 * @Version 1.0
 */
@RestController
@RequestMapping("/books")
public class BookController {
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("id ===> " + id);
        return " hello springboot";
    }
}

2.3 启动测试

在这里插入图片描述

在这里插入图片描述

3. Spring官网构建工程

  • 进入SpringBoot官网:https://spring.io/projects/spring-boot
    在这里插入图片描述

  • Projects–>Overview
    在这里插入图片描述

  • 进入到Spring Boot并拖到最下面找到如下图
    在这里插入图片描述

  • 点击Spring Initializr, 可以发现下图的界面与IDEA 创建Spring Boot项目非常像。发现

  • 进行相关配置后,点击GENERATE CTRL +即可
    在这里插入图片描述

  • 查看,发现的确是一个SpringBoot项目
    在这里插入图片描述
    在这里插入图片描述

那么现在回答第一模块中提出的问题,为什么用IDEA创建SpringBoot项目必须要联网,要不然会创建失败?

  • 其实IDEA创建Spring Boot项目走的就是Spring官网构建Spring Boot项目的流程,相当于是SpringBoot官网帮我们构建,然后展示在我们的IDEA上,所以这是必须要联网的原因。

4. SpringBoot工程快速启动

4.1 为什么要快速启动?

以后我们和前端开发人员协同开发,而前端开发人员需要测试前端程序就需要后端开启服务器,这就受制于后端开发人员。为了摆脱这个受制,前端开发人员尝试着在自己电脑上安装 TomcatIdea ,在自己电脑上启动后端程序,这显然不现实。

我们后端可以将 SpringBoot 工程打成 jar 包,该 jar 包运行不依赖于 TomcatIdea 这些工具也可以正常运行,只是这个 jar 包在运行过程中连接和我们自己程序相同的 Mysql 数据库即可。这样就可以解决这个问题。

4.2 SpringBoot项目打包

在构建 SpringBoot 工程时已经在 pom.xml 中配置了如下插件

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

所以只需要使用 Mavenpackage 指令打包就会在 target 目录下生成对应的 Jar 包。

注意:该插件必须配置,不然打好的 jar 包也是有问题的。

在这里插入图片描述

4.3 SpringBoot项目启动

  • 进入springboot_01_quickstart1-0.0.1-SNAPSHOT.jar所在的目录
    在这里插入图片描述
    在这里插入图片描述

  • 在该目录下进入cmd, 回车即可h

  • 输入java -jar springboot_01_quickstart1-0.0.1-SNAPSHOT.jar, 启动该项目
    在这里插入图片描述

  • Postman工具进行测试
    在这里插入图片描述

5. SpringBoot概述

5.1 起步依赖

我们使用 Spring Initializr 方式创建的 Maven 工程的的 pom.xml 配置文件中自动生成了很多包含 starter 的依赖,如下图

在这里插入图片描述

  • 进入spring-boot-starter-parent进行查看
    在这里插入图片描述
  • 可以看到spring-boot-starter-parent的父工程为spring-boot-dependencies,进行查看,可以发现很多依赖都已经进行了配置。

在这里插入图片描述

  • 进入spring-boot-starter-web进行查看
    在这里插入图片描述

  • 进入spring-boot-starter-test进行查看
    在这里插入图片描述

这些依赖就是启动依赖

5.2 程序启动

创建的每一个 SpringBoot 程序时都包含一个类似于下面的类,我们将这个类称作引导类

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

注意:

  • SpringBoot 在创建项目时,采用jar的打包方式

  • SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目

因为我们在 pom.xml 中配置了 spring-boot-starter-web 依赖,而该依赖通过前面的学习知道它依赖 tomcat ,所以运行 main 方法就可以使用 tomcat 启动咱们的工程。

5.3 切换web服务器

预备Maven高级知识:可选依赖和排除依赖

  • A依赖B,B依赖C,C通过依赖传递会被A使用到,现在要想办法让A不去依赖C
  • 可选依赖是在B上设置<optional>,A不知道有C的存在,
  • 排除依赖是在A上设置<exclusions>,A知道有C的存在,主动将其排除掉。

我们启动工程使用的是 tomcat 服务器,那能不能不使用 tomcat 而使用 jetty 服。而要切换 web 服务器就需要将默认的 tomcat 服务器给排除掉,怎么排除呢?使用 exclusion 标签:

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

引入 jetty 服务器。在 pom.xml 中引入 jetty 的起步依赖

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

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

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

相关文章

自学大数据的第一天

默认跳过基础部分,直接搞集群的部分,期间用到的linux基础默认大伙都会了(不会的话可以现用现查) Hadoop集群搭建 集群特点: 1,逻辑上分离~集群之间没有依赖,互不影响 2,某些进程往往部署在一台服务器上,但是属于不同的集群 3,MapReduce 是计算框架,代码层面的处理逻辑 集群的…

mindspore的MLP模型(多层感知机)

导入模块 import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import mindspore import mindspore.dataset as ds from mindspore import nn import mindspore.ops as ops import mindspore.numpy as mnp from …

Python 内置函数eval()

Python 内置函数eval() eval(expression, globalsNone, localsNone) 函数用来执行一个字符串表达式&#xff0c;并返回表达式的值。 expression: 字符串表达式。global: 可选&#xff0c;globals必须是一个字典。locals: 可选&#xff0c;locals可以是任何映射对象。 示例 &…

微信小程序开发【壹】

随手拍拍&#x1f481;‍♂️&#x1f4f7; 日期: 2023.02.24 地点: 杭州 介绍: 2023.02.24上午十点&#xff0c;路过学院的教学楼时&#x1f3e2;&#xff0c;突然看见了一团粉红色。走进一看是一排梅花&#x1f338;&#xff0c;赶在它们凋零前&#xff0c;将它们定格在我的相…

QML 第一个应用程序Window

1.创建QML工程 新建文件或者项目-->选择Qt Quick Application 然后生成了一个默认的Window 2.main.cpp中如何加载的qml文件 QQmlApplicationEngine提供了从单个QML文件加载应用程序的便捷方式。 此类结合了QQmlEngine和QQmlComponent&#xff0c;以提供一种方便的方式加载…

用 Python 画如此漂亮的插图 ,So easy

人生苦短&#xff0c;快学Python&#xff01; 今天我们进行一次实战案例分享&#xff0c;以全球预期寿命与人均 GPD数据为例&#xff0c;写一篇 Python 中漂亮散点图的快速指南。除了正常的数据清洗/处理、还会进行简单的统计分析&#xff0c;实现数据处理-统计分析-可视化一条…

【Servlet篇】如何解决Request请求中文乱码的问题?

前言 前面一篇文章我们探讨了 Servlet 中的 Request 对象&#xff0c;Request 请求对象中封装了请求数据&#xff0c;使用相应的 API 就可以获取请求参数。 【Servlet篇】一文带你读懂 Request 对象 也许有小伙伴已经发现了前面的方式获取请求参数时&#xff0c;会出现中文乱…

【Spark分布式内存计算框架——Spark Streaming】4.入门案例(下)Streaming 工作原理

2.3 Streaming 工作原理 SparkStreaming处理流式数据时&#xff0c;按照时间间隔划分数据为微批次&#xff08;Micro-Batch&#xff09;&#xff0c;每批次数据当做RDD&#xff0c;再进行处理分析。 以上述词频统计WordCount程序为例&#xff0c;讲解Streaming工作原理。 创…

[数据结构]:06-队列(链表)(C语言实现)

目录 前言 已完成内容 队列实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-QueueCommon.cpp 04-QueueFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言代码。使用C引用主要是为了简化…

Spring Cache的使用--快速上手篇

系列文章目录 分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 完善登录功能–过滤器的使用 更多该系列文章请查看我的主页哦 文章目录系列文章目录前言一、Spring Cache介绍二、Spring Cache的使用1. 导入依赖2. 配置信息3. 在启动类上添加注解4. 添加注解4.1 CacheP…

duboo+zookeeper分布式架构入门

分布式 dubbo Zookeeper 分布式系统就是若干独立计算机的集合&#xff08;并且这些计算机之间相互有关联&#xff0c;就像是一台计算机中的C盘F盘等&#xff09;&#xff0c;这些计算对于用户来说就是一个独立的系统。 zookeeper安装 下载地址&#xff1a;Index of /dist/z…

MyBatis——增删改查操作的实现

开启mybatis sql日志打印 可以在日志中看到sql中执行的语句 在配置文件中加上下面这几条语句 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl logging.level.com.example.demodebug查询操作 根据用户id查询用户 UserMapper&#xff1a; User…

RTD2169芯片停产|完美替代RTD2169芯片|CS5260低BOM成本替代RTD2169方案设计

RTD2169芯片停产|完美替代RTD2169芯片|CS5260低BOM成本替代RTD2169方案设计 瑞昱的RTD2169芯片目前已经停产了&#xff0c; 那么之前用RTD2169来设计TYPEC转VGA方案的产品&#xff0c;该如何生产这类产品&#xff1f;且RTD2169芯片价格较贵&#xff0c;芯片封装尺寸是QFN40&…

JS函数的4种调用方式

函数可以声明定义&#xff0c;也可以是一个表达式&#xff0c;函数使用关键字function定义函数被定义时&#xff0c;函数内部的代码不会执行函数被调用时&#xff0c;函数内部的代码才会执行函数有四种调用方式&#xff0c;每种方式的不同在于this的初始化。&#xff08;this是…

HTML#1快速入门

一. 简介HTML是一门语言, 所有的网页都是用HTML编写的HTML(Hyper Text Markup Language): 超文本(超越了文本限制,除了文字信息还可以定义图片,音频,视频等)标记语言(有标签构成的语言)W3C标准: 网页主要由三部分组成(1) 结构: HTML(2) 表现: CSS(3) 行为: JavaScript二. 快速入…

optional说明

1.说明 public final class Optional<T> extends Object 可能包含或不包含非空值的容器对象。 如果一个值存在&#xff0c; isPresent()将返回true和get()将返回值。 提供依赖于存在或不存在包含值的其他方法&#xff0c;例如orElse() &#xff08;如果值不存在则返回…

印度这事真的干的挺棒的! |

来源&#xff1a;statista最近逛外网看到一张图&#xff0c;是关于印度家庭自来水供应的对比图。Crore是印度的单位千万(卢比)&#xff0c;所以他们从2019年供应3.23千万家庭&#xff0c;增长到了2022年的9.57万家庭&#xff0c;印度这事真的干的挺棒的&#xff01;一直以来印度…

【USB】windows热插拔通知接口分析

文章目录接口介绍概述过滤器介绍举例接收通知创建窗口参考文档接口介绍 概述 window提供了RegisterDeviceNotificationW方法&#xff0c;可以用来监听设备的热插拔事件。 HDEVNOTIFY RegisterDeviceNotificationW([in] HANDLE hRecipient,[in] LPVOID NotificationFilter,[in]…

Android 多种支付方式的优雅实现

场景App 的支付流程&#xff0c;添加多种支付方式&#xff0c;不同的支付方式&#xff0c;对应的操作不一样&#xff0c;有的会跳转到一个新的webview&#xff0c;有的会调用系统浏览器&#xff0c;有的会进去一个新的表单页面&#xff0c;等等。并且可以添加的支付方式也是不确…

计算机网络-网络核心(day02)

网络核心 最主要的功能&#xff1a; 数据交换的功能 转发&#xff0c;路由 主要分为线路交换&#xff0c;分组交换 线路交换 可以认为所有的电话通信都是线路交换 线路交换&#xff0c;比如打电话&#xff0c;需要先建立连接&#xff08;主机要经过哪些链路哪些交换机&#…