SSM - Springboot - MyBatis-Plus 全栈体系(二十六)

第六章 SpringBoot

  • 快速启动框架:SpringBoot3 实战

一、SpringBoot3 介绍

1. SpringBoot3 简介

  • SpringBoot 版本:3.0.5

  • 到目前为止已经学习了多种配置 Spring 程序的方式。但是无论使用 XML、注解、Java 配置类还是他们的混合用法,都会觉得配置文件过于复杂和繁琐,让人头疼!

  • SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot 底层是 Spring),大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术!

  • SpringBoot 的主要目标是:

    • 为所有 Spring 开发提供更快速、可广泛访问的入门体验。
    • 开箱即用,设置合理的默认值,但是也可以根据需求进行适当的调整。
    • 提供一系列大型项目通用的非功能性程序(如嵌入式服务器、安全性、指标、运行检查等)。
    • 约定大于配置,基本不需要主动编写配置类、也不需要 XML 配置文件。

总结:简化开发,简化配置,简化整合,简化部署,简化监控,简化运维。

2. 系统要求

技术&工具版本(or later)
maven3.6.3 or later 3.6.3 或更高版本
Tomcat10.0+
Servlet9.0+
JDK17+

3. 快速入门

场景:浏览器发送/hello 请求,返回"Hello,Spring Boot 3!"

3.1 开发步骤
  1. 创建 Maven 工程
  2. 添加依赖(springboot 父工程依赖 , web 启动器依赖)
  3. 编写启动引导类(springboot 项目运行的入口)
  4. 编写处理器 Controller
  5. 启动项目
3.2 创建项目

请添加图片描述

3.3 添加依赖
3.3.1 添加父工程坐标
  • SpringBoot 可以帮我们方便的管理项目依赖 , 在 Spring Boot 提供了一个名为 spring-boot-starter-parent 的工程,里面已经对各种常用依赖的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了,需要什么依赖,直接引入坐标(不需要添加版本)即可!
<!--所有springboot项目都必须继承自 spring-boot-starter-parent-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version>
</parent>
3.3.2 添加 web 启动器
  • 为了让 Spring Boot 帮我们完成各种自动配置,我们必须引入 Spring Boot 提供的自动配置依赖,我们称为启动器。因为我们是 web 项目,这里我们引入 web 启动器,在 pom.xml 文件中加入如下依赖:
<dependencies>
<!--web开发的场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
3.4 创建启动类
  • 创建 package:com.alex
  • 创建启动类:MainApplication
package com.alex;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @SpringBootApplication是一个特殊的注解,用于标识一个Spring Boot应用程序的入口类。它的主要作用是将三个常用注解组合在一起,简化了配置的过程。** 具体而言,@SpringBootApplication注解包含以下三个注解的功能:*     @Configuration:将该类标识为应用程序的配置类。它允许使用Java代码定义和配置Bean。*     @EnableAutoConfiguration:启用Spring Boot的自动配置机制。它根据项目的依赖项自动配置Spring应用程序的行为。自动配置根据类路径、注解和配置属性等条件来决定要使用的功能和配置。*     @ComponentScan:自动扫描并加载应用程序中的组件,如控制器、服务、存储库等。它默认扫描@SpringBootApplication注解所在类的包及其子包中的组件。** 使用@SpringBootApplication注解,可以将上述三个注解的功能集中在一个注解上,简化了配置文件的编写和组件的加载和扫描过程。它是Spring Boot应用程序的入口点,标识了应用程序的主类,* 并告诉Spring Boot在启动时应如何配置和加载应用程序。*/
@SpringBootApplication
public class MainApplication {//SpringApplication.run() 方法是启动 Spring Boot 应用程序的关键步骤。它创建应用程序上下文、//自动配置应用程序、启动应用程序,并处理命令行参数,使应用程序能够运行和提供所需的功能public static void main(String[] args) {SpringApplication.run(MainApplication.class,args);}
}
3.5 编写处理器 Controller
  • 创建 package:com.alex.controller
  • 创建类:HelloController
  • 注意: IoC 和 DI 注解需要在启动类的同包或者子包下方可生效!无需指定,约束俗称。
package com.alex.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String hello(){return "Hello,Spring Boot 3!";}}
3.6 启动测试

在这里插入图片描述

4. 入门总结

4.1 为什么依赖不需要写版本?
  • 每个 boot 项目都有一个父项目spring-boot-starter-parent
  • parent 的父项目是spring-boot-dependencies
  • 父项目 版本仲裁中心,把所有常见的 jar 的依赖版本都声明好了。
  • 比如:mysql-connector-j
    在这里插入图片描述
4.2 启动器(Starter)是何方神圣?
  • Spring Boot 提供了一种叫做 Starter 的概念,它是一组预定义的依赖项集合,旨在简化 Spring 应用程序的配置和构建过程。Starter 包含了一组相关的依赖项,以便在启动应用程序时自动引入所需的库、配置和功能。
4.2.1 主要作用如下
  1. 简化依赖管理:Spring Boot Starter 通过捆绑和管理一组相关的依赖项,减少了手动解析和配置依赖项的工作。只需引入一个相关的 Starter 依赖,即可获取应用程序所需的全部依赖。
  2. 自动配置:Spring Boot Starter 在应用程序启动时自动配置所需的组件和功能。通过根据类路径和其他设置的自动检测,Starter 可以自动配置 Spring Bean、数据源、消息传递等常见组件,从而使应用程序的配置变得简单和维护成本降低。
  3. 提供约定优于配置:Spring Boot Starter 遵循“约定优于配置”的原则,通过提供一组默认设置和约定,减少了手动配置的需要。它定义了标准的配置文件命名约定、默认属性值、日志配置等,使得开发者可以更专注于业务逻辑而不是繁琐的配置细节。
  4. 快速启动和开发应用程序:Spring Boot Starter 使得从零开始构建一个完整的 Spring Boot 应用程序变得容易。它提供了主要领域(如 Web 开发、数据访问、安全性、消息传递等)的 Starter,帮助开发者快速搭建一个具备特定功能的应用程序原型。
  5. 模块化和可扩展性:Spring Boot Starter 的组织结构使得应用程序的不同模块可以进行分离和解耦。每个模块可以有自己的 Starter 和依赖项,使得应用程序的不同部分可以按需进行开发和扩展。
    在这里插入图片描述
  • Spring Boot 提供了许多预定义的 Starter,例如 spring-boot-starter-web 用于构建 Web 应用程序,spring-boot-starter-data-jpa 用于使用 JPA 进行数据库访问,spring-boot-starter-security 用于安全认证和授权等等。
  • 使用 Starter 非常简单,只需要在项目的构建文件(例如 Maven 的 pom.xml)中添加所需的 Starter 依赖,Spring Boot 会自动处理依赖管理和配置。
  • 通过使用 Starter,开发人员可以方便地引入和配置应用程序所需的功能,避免了手动添加大量的依赖项和编写冗长的配置文件的繁琐过程。同时,Starter 也提供了一致的依赖项版本管理,确保依赖项之间的兼容性和稳定性。
  • spring boot 提供的全部启动器地址:
    • https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
4.2.2 命名规范
  • 官方提供的场景:命名为:spring-boot-starter-*
  • 第三方提供场景:命名为:*-spring-boot-starter
4.3 @SpringBootApplication 注解的功效?
  • @SpringBootApplication 添加到启动类上,是一个组合注解,他的功效有具体的子注解实现!
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {}
  • @SpringBootApplication 注解是 Spring Boot 框架中的核心注解,它的主要作用是简化和加速 Spring Boot 应用程序的配置和启动过程。

  • 具体而言,@SpringBootApplication 注解起到以下几个主要作用:

    • 自动配置:@SpringBootApplication 注解包含了@EnableAutoConfiguration 注解,用于启用 Spring Boot 的自动配置机制。自动配置会根据应用程序的依赖项和类路径,自动配置各种常见的 Spring 配置和功能,减少开发者的手动配置工作。它通过智能地分析类路径、加载配置和条件判断,为应用程序提供适当的默认配置。
    • 组件扫描:@SpringBootApplication 注解包含了@ComponentScan 注解,用于自动扫描并加载应用程序中的组件,例如控制器(Controllers)、服务(Services)、存储库(Repositories)等。它默认会扫描@SpringBootApplication 注解所在类的包及其子包中的组件,并将它们纳入 Spring Boot 应用程序的上下文中,使它们可被自动注入和使用。
    • 声明配置类:@SpringBootApplication 注解本身就是一个组合注解,它包含了@Configuration 注解,将被标注的类声明为配置类。配置类可以包含 Spring 框架相关的配置、Bean 定义,以及其他的自定义配置。通过@SpringBootApplication 注解,开发者可以将配置类与启动类合并在一起,使得配置和启动可以同时发生。
  • 总的来说,@SpringBootApplication 注解的主要作用是简化 Spring Boot 应用程序的配置和启动过程。它自动配置应用程序、扫描并加载组件,并将配置和启动类合二为一,简化了开发者的工作量,提高了开发效率。

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

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

相关文章

String、StringBuilder、StringBuffer区别

String、StringBuilder、StringBuffer区别 面试官&#xff1a;请你谈谈String、StringBuilder、StringBuffer区别 作为经典Java八股&#xff0c;是面试必考的热门点。 下面让我们一起来看一下他们的区别吧&#xff01; 主要是测试他们的效率和应用场景&#xff0c;具体语法不在…

[资源推荐] 复旦大学张奇老师科研分享

刷B站的时候首页给我推了这个&#xff1a;【直播回放】复旦大学张奇教授亲授&#xff1a;人工智能领域顶会论文的发表指南先前也散漫地读了些许论文&#xff0c;但没有在一些宏观的方法论下去训练&#xff0c;读的时候能感觉出一些科研的套路&#xff0c;论文写作的套路&#x…

C++算法:图中的最短环

题目 现有一个含 n 个顶点的 双向 图&#xff0c;每个顶点按从 0 到 n - 1 标记。图中的边由二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和 vi 之间存在一条边。每对顶点最多通过一条边连接&#xff0c;并且不存在与自身相连的顶点。 返回图中 …

Kafka保证消息幂等以及解决方案

1、幂等的基本概念 幂等简单点讲&#xff0c;就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的&#xff0c;不会产生任何副作用。幂等分很多种&#xff0c;比如接口的幂等、消息的幂等&#xff0c;它是分布式系统设计时必须要考虑的一个方面。 查询操作(天然幂等…

【VR开发】【Unity】0-课程简介和概述

【说明】 这是我录制的一套VR基础开发课程的文字版本&#xff0c;更加便于快速参考。 应大家在后台所提的需求&#xff0c;从今天开始&#xff0c;我计划带给大家一套完整达40课时的VR开发基础课程。 在开始学习前需要注意如下几点&#xff1a; 本教程基于Unity2022.2.1f1版…

SqlServer安装教程

百度网盘地址: 链接&#xff1a;https://pan.baidu.com/s/1ntqoK9uVc6fBVTm7twh8kw 提取码&#xff1a;grdt 安装: 双击:SQLEXPRADV_x64_CHS.exe ,等待;点击计划,系统配置检查器,根据要求修改(我被要求重启了)点击安装,全新SQL Server独立安装或向现有安装添加功能,接受功能选…

2023年09月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 Python编程&#xff08;1~6级&#xff09;全部真题・点这里 第1题&#xff1a;红与黑 有一间长方形的房子&#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上&#xff0c;只能向相邻的黑色…

kafka详解(三)

2.2 Kafka命令行操作 2.2.1 主题命令行操作 1&#xff09;查看操作主题命令参数 [aahadoop102 kafka]$ bin/kafka-topics.sh2&#xff09;查看当前服务器中的所有topic (配置了环境变量不需要写bin/) [aahadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop10…

SpringBoot-黑马程序员-学习笔记(五)

74.自定义bean属性绑定以及第三方bean属性绑定 自定义bean属性绑定 1.自定义一个bean Data Component public class ServerConfig {private String ipAddress;private int port;private long timeout; } 2.在yml配置文件中中定义一组值 3.在bean中进行属性绑定 加上这个注…

mysql中的几种排名函数

mysql中的排名函数 mysql里面的排名函数&#xff0c;涉及有以下几个&#xff1a; rank()、dense_rank()、row_number() 1、rank() 函数 RANK() OVER (PARTITION BY <expression>[{,<expression>...}]ORDER BY <expression> [ASC|DESC], [{,<expression…

【Nginx32】Nginx学习:随机索引、真实IP处理与来源处理模块

Nginx学习&#xff1a;随机索引、真实IP处理与来源处理模块 完成了代理这个大模块的学习&#xff0c;我们继续其它 Nginx 中 HTTP 相关的模块学习。今天的内容都比较简单&#xff0c;不过最后的来源处理非常有用&#xff0c;可以帮我们解决外链问题。另外两个其实大家了解一下就…

C#开发的OpenRA游戏之金钱系统(1)

C#开发的OpenRA游戏之金钱系统(1) 设计一个游戏,肯定要有一个唯一的资源,用这个资源来管理整个游戏的进度,以及相互争夺的焦点。在OpenRA里,就是使用矿产资源。所以在地图上分布几个矿场,玩家就需要相互争夺矿场,谁开采多谁就更有钱,谁有钱了就可以升级更好的科技,以…

Linux Kernel 4.13 RC6发布:正式版9月3日发布

美国当地时间上周末&#xff0c;大神Linus Torvalds发布了Linux Kernel 4.13内核的又一候选版本。上周发布的RC5版本更新幅度也要比上上周的RC4要小&#xff0c;Linus Torvalds表示本周发布的RC6版本属于常规更新&#xff0c;在过去一周的开发过程中并没有出现任何意外。RC6版本…

Spring MVC 十一:@EnableWebMvc

我们从两个角度研究EnableWebMvc&#xff1a; EnableWebMvc的使用EnableWebMvc的底层原理 EnableWebMvc的使用 EnableWebMvc需要和java配置类结合起来才能生效&#xff0c;其实Spring有好多Enablexxxx的注解&#xff0c;其生效方式都一样&#xff0c;通过和Configuration结合…

Linux 64位 C++协程池原理分析及代码实现

导语 本文介绍了协程的作用、结构、原理&#xff0c;并使用C和汇编实现了64位系统下的协程池。文章内容避免了协程晦涩难懂的部分&#xff0c;用大量图文来分析原理&#xff0c;适合新手阅读学习。 GitHub源码 1. Web服务器问题 现代分布式Web后台服务逻辑通常由一系列RPC请…

【java学习—七】单继承和多层继承(30)

文章目录 1. 相关概念2. 从代码中理解 1. 相关概念 Java 只支持单继承&#xff0c;不允许多重继承&#xff1a; &#xff08;1&#xff09;一个子类只能有一个父类 &#xff08;2&#xff09;一个父类可以派生出多个子类      举例区分&#xff1a; class SubDemo extend…

Hermes - 指尖上的智慧:自定义问答系统的崭新世界

在希腊神话中&#xff0c;有一位智慧与消息的传递者神祇&#xff0c;他就是赫尔墨斯&#xff08;Hermes&#xff09;。赫尔墨斯是奥林匹斯众神中的一员&#xff0c;传说他是乌尔阿努斯&#xff08;Uranus&#xff09;和莫伊拉&#xff08;Maia&#xff09;的儿子&#xff0c;同…

Git纯操作版 项目添加和提交、SSH keys添加、远程仓库控制、冲突解决、IDEA连接使用

Git 文章目录 Git项目简单克隆通用操作添加和提交回滚分支变基分支优选 远程项目推送认证抓取、拉取和冲突解决 IEDA类软件连接 最近学原理学的快头秃了&#xff0c;特此想出点不讲原理的纯操作版&#xff0c;不过还是放个图吧 项目简单克隆 git在本人日常中最重要的功能还是…

Linux中怎么启动Zookeeper

首先进入Zookeeper安装目录下的bin目录 比如&#xff1a; cd /root/zookeeper-3.4.9/bin 然后在此目录下执行命令。 1. 启动Zookeeper Server端 ./zkServer.sh start 2.启动Zookeeper Client端 ./zkCli.sh 启动Zookeeper Client端后如下&#xff1a;

Electron基础学习笔记

Electron基础学习笔记 官网&#xff1a; https://www.electronjs.org/ 文档&#xff1a;https://www.electronjs.org/zh/docs/latest/ Electon概述 Electron 是由 Github开发的开源框架它允许开发者使用Web技术构建跨平台的桌面应用 Electron Chromium Node.js Native AP…