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

news2024/11/26 15:36:58

第六章 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.coloradmin.cn/o/1090158.html

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

相关文章

Qt 输入组控件(Input Widgets) 显示组控件(Display Widgets)详解

一、Qt 输入组控件(Input Widgets&#xff09; Qt Input Widgets是一组用户界面元素&#xff0c;用于输入和显示文字和数字等的数据。这些小部件可以组成各种不同的表单和对话框&#xff0c;用户可以使用这些小部件与程序交互。 以下是Qt Input Widgets的一些常见小部件&…

vue面试题-应用层

MVC与MVVM MVCMVVM 双向数据绑定 vue2 双向绑定原理 v-model原理 vue3 双向绑定原理 示例 对比 vue2响应式原理和Vue3响应式原理 data为什么是函数?v-if 与 v-show MVC与MVVM MVC和MVVM是两种流行的设计模式&#xff0c;它们都是用于构建动态应用程序的框架。 MVC MVC&#…

Prometheus PromQL及传统部署 Alertmanager 发送告警

文章目录 一.PromQL 简介1.PromQL概念2.时间序列3.Prometheus数据模型4.指标名称及标签使用注意事项5.样本数据格式 二.PromQL 的数据类型1.PromQL 的表达式中支持 4 种数据类型2.时间序列选择器&#xff08;Time series Selectors&#xff09;①瞬时向量选择器由两部分组成②定…

关于智能控制领域中模糊控制算法的概述

智能控制领域中的模糊控制算法是一种基于模糊逻辑的控制策略&#xff0c;它通过对模糊集合的刻画来处理模糊信息&#xff0c;从而获得模糊输出并进行控制。模糊控制算法在实际控制工程中具有良好的应用前景&#xff0c;它不但具有较强的鲁棒性和适应性&#xff0c;而且可以为复…

Stable Diffusion 动画animatediff-cli-prompt-travel

基于 sd-webui-animatediff 生成动画或者动态图的基础功能,animatediff-cli-prompt-travel突破了部分限制,能让视频生成的时间更长,并且能加入controlnet和提示词信息控制每个片段,并不像之前 sd-webui-animatediff 的一套关键词控制全部画面。 动图太大传不上来,凑合看每…

数据仓库DW-理论知识储备

数据仓库DW 数据仓库具备 采集数据、分析数据、存储数据的功能&#xff0c;最后得出一些有用的数据&#xff0c;一些目标数据来使用。 采集来自不同源的数据&#xff0c;然后对这些数据进行分析和计算得出一些有用的指标&#xff0c;提供数据决策支持。 数据的来源有&#xff…

[华为杯研究生创新赛 2023] 初赛 REV WP

前言 一年没打比赛了, 差一题进决赛, REV当时lin的第三个challenge没看出来是凯撒, 想得复杂了, 结果错失一次线下机会 >_< T4ee 动态调试, nop掉反调试代码 发现处理过程为 置换sub_412F20处理(这里看其他师傅的wp知道应该是rc4, 我是直接en逆的buf字符串中每一位和…

GPIO子系统(三)

1&#xff0c;简述 GPIO 资源是相对来说较为简单&#xff0c;而且比较通用&#xff08;比如 LED 灯&#xff09;&#xff0c;而 Linux 的 GPIO 驱动属于 Linux Driver 中较为容易上手的部分&#xff0c;但是简单归简单&#xff0c;在 Linux 系统中&#xff0c;要使用 GPIO 资源…

BootStrap-前端框架

资料:https://v3.bootcss.com/components/ BootStrap的概念&#xff08;Web框架&#xff09; Bootstrap&#xff0c;来自 Twitter&#xff0c;是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的&#xff0c;它简洁灵活&#xff0c;使得 Web 开发更加快捷。…

聚观早报 | “百度世界2023”即将举办;2024款岚图梦想家上市

【聚观365】10月13日消息 “百度世界2023”即将举办 2024款岚图梦想家上市 腾势D9用户超10万 华为发布新一代GigaGreen Radio OpenAI拟进行重大更新 “百度世界2023”即将举办 “百度世界2023”将于10月17日在北京首钢园举办。届时&#xff0c;百度创始人、董事长兼首席执…

5、docker mysql安装

1、查看版本 docker search mysql 2、下载镜像到本地 下载镜像&#xff0c;本文以5.7为例 docker pull mysql:5.7 3、创建挂载目录 mkdir /usr/local/mysql 4、创建mysql容器 docker run --name mysql-test -e MYSQL_ROOT_PASSWORDroot -p 3306:3306 -d mysql –name&am…

最详细STM32,cubeMX 按键点亮 led

这篇文章将详细介绍 如何在 stm32103 板子上使用 按键 点亮一个LED. 文章目录 前言一、如何控制按键&#xff1f;为什么按键要接上拉电阻或者下拉电阻呢&#xff1f; 二、cubeMX配置工程自动生成代码解析 三、读取引脚电平函数四、按键为什么要消抖如何消除消抖 五、实现按键控…

如何提高MES系统的落地成功率?

导 读 ( 文/ 2768 ) 制造执行系统&#xff08;MES&#xff09;在现代制造业中扮演着至关重要的角色&#xff0c;但实施MES系统并取得成功并非易事。为了帮助企业提高MES系统的落地成功率&#xff0c;本文将介绍关键的方法和策略。通过深入了解业务需求、有效的团队合作、全面的…

基于nodejs+vue大学食堂订餐系统

模块包括主界面&#xff0c;首页、个人中心、管理员管理、用户管理、菜品管理、论坛管理、公告管理、基础数据管理、目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1nodejs简介 4 2.2 express框…

《从菜鸟到大师之路 正则表达式 篇》

《从菜鸟到大师之路 正则表达式 篇》 正则表达式是一个强大的文本匹配工具。但是&#xff0c;对于前端初学者来说&#xff0c;众多的符号和规则可能让人难以理解。其实&#xff0c;你不需要记住所有的正则表达式语法&#xff01;本文将分享一些简单而实用的技巧&#xff0c;帮…

asp.net酒店餐饮管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net酒店餐饮管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 ASP.NE 酒店餐饮管理系统 二、功能…

HSN:微调预训练ViT用于目标检测和语义分割,华南理工和阿里巴巴联合提出

今天跟大家分享华南理工大学和阿里巴巴联合提出的将ViT模型用于下游任务的高效微调方法HSN&#xff0c;该方法在迁移学习、目标检测、实例分割、语义分割等多个下游任务中表现优秀&#xff0c;性能接近甚至在某些任务上超越全参数微调。 论文标题&#xff1a;Hierarchical Side…

第六章:路由交换机及操作系统

路由交换机及操作系统 一、路由器与交换机的作用与特点1.路由器1.1 作用1.2 特点 2.交换机2.1 作用2.2 特点 二、H3C路由器与交换机介绍1. 路由器2. 交换机 三、 H3C网络设备操作系统Comware1. 介绍2. 特点![在这里插入图片描述](https://img-blog.csdnimg.cn/2b24103028654878…

玻璃生产过程中的窑内压力高精度恒定控制解决方案

摘要&#xff1a;在玻璃生产中对玻璃窑炉中窑压的要求极高&#xff0c;通常需要控制微正压4.7Pa&#xff08;表压&#xff09;&#xff0c;偏差控制在0.3Pa&#xff0c;而窑炉压力还会受到众多因素的影响&#xff0c;所以实现高稳定性的熔窑压力控制具有很大难度&#xff0c;为…

Codeforces Round 903 (Div. 3)ABCDE

Codeforces Round 903 (Div. 3)ABCDE 目录 A. Dont Try to Count题目大意思路核心代码 B. Three Threadlets题目大意思路核心代码 C. Perfect Square题目大意思路核心代码 D. Divide and Equalize题目大意思路核心代码 E. Block Sequence题目大意思路核心代码 A. Don’t Try t…