当前位置: 首页 > news >正文

【深入理解 SpringBoot3】第一弹:SpringBoot3 快速入门

一、SpringBoot是什么

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

特性:

  1. 直接嵌入Tomcat、Jetty 或 Undertow(无需部署war包)

  2. 提供可选的 starter(场景启动器) 简化应用的整合

  3. 实现按需的自动配置Spring以及第三方库(约定大于配置):application.properties

  4. 提供生产级别的特性:如监控指标、健康检测、外部化配置:可以通过修改配置文件实现

  5. 简化部署:打包为可执行的 jar 包

二、依赖管理机制

  1. 通过导入 starter 场景启动器,场景启动器会自动将该场景的所有核心依赖导入进来

  2. 由于每个 SpringBoot 项目都有一个父项目spring-boot-starter-parent,parent的父项目是spring-boot-dependencies(父项目 版本仲裁中心,把所有常见的jar的依赖版本都声明好了)

  3. 可以实现在导入依赖的时候声明版本

三、自动配置机制

  1. 导入starter-web:导入了web开发场景(场景启动器会默认导入相关场景的所有依赖:starter-jsonstarter-tomcat、springmvc),同时在每个场景启动器中都会引入一个spring-boot-starter,核心场景启动器。核心场景启动器会引入spring-boot-autoconfigure(囊括了所有场景的所有配置)。只要这个包下的所有类都能生效,那么相当于SpringBoot官方写好的整合功能就生效。

    1. SpringBoot默认却扫描不到 spring-boot-autoconfigure下写好的所有配置类。(这些配置类给我们做了整合操作),默认只扫描主程序所在的包

  2. 主程序@SpringBootApplication由三个注解组成@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan

    1. SpringBoot默认只能扫描自己主程序所在的包及其下面的子包,扫描不到 spring-boot-autoconfigure包中官方写好的配置类

    2. @EnableAutoConfiguration作为SpringBoot 开启自动配置的核心,它是由@Import(AutoConfigurationImportSelector.class)提供功能,并批量给容器中导入组件。这些组件包括142个配置类,这142个配置类均来自于spring-boot-autoconfigureMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件指定的

    3. 这142个配置类并不会都生效,每一个自动配置类,都有条件注解@ConditionalOnxxx,只有条件成立,才能生效

  3. xxxxAutoConfiguration自动配置类通过@EnableConfigurationProperties(ServerProperties.class), 负责给容器中的每个Bean对象绑定一些核心参数,而这些核心参数都来自于xxxProperties,而xxxProperties由是和配置文件进行绑定的。此时就可以实现配置文件的修改关联核心组件的底层参数的修改

相关文章:

  • MATLAB+Arduino利用板上的按键控制板上Led灯
  • Ant Design Vue Select 选择器 全选 功能
  • 深度学习核心算法
  • git 基础操作
  • Python---数据分析(Pandas十:二维数组DataFrame统计计算一)
  • SpringCloud介绍
  • SQL的DCL,DDL,DML和DQL分别是什么
  • 运维--个人打包脚本分享(Linux)
  • canvas数据标注功能简单实现:矩形、圆形
  • 2025年如何避免使用验证码求解器时被IP封禁
  • (每日一道算法题)翻转对
  • 基于 ECharts 实现动态图表渲染支持10万+数据点实时更新方案
  • Flutter使用自签证书打包ipa
  • Excel 小黑第19套
  • 基于springboot的美容院管理系统(044)
  • 深圳问顶安全科技有限公司asktopsec是做什么的?
  • 事件、页面跳转、wxml语法——微信小程序学习笔记
  • 【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功
  • How to share files with Windows via samba in Linux mint 22
  • MyBatisPlus(SpringBoot版)学习第二讲:基本CRUD
  • 线下哪些商家支持无理由退货?查询方法公布
  • 宇数科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入
  • 47本笔记、2341场讲座,一位普通上海老人的阅读史
  • 国家发改委:美芯片药品等领域关税影响全球科技发展,损害人类共同利益
  • 第一集|《刑警的日子》很生活,《执法者们》有班味
  • 中信银行:拟出资100亿元全资设立信银金融资产投资有限公司