SpringBoot:核心模块盘点

news2024/11/16 23:31:01

spring-boot-project 是 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码,其中很多模块都是我们了解 spring-boot 的重点。

本篇内容包括:spring-boot-project 包介绍、Spring Boot 核心模块


文章目录

    • 一、spring-boot-project 包介绍
        • 1、Spring Boot 源码构成
        • 2、Spring Boot 核心技术包(spring-boot-project)
    • 二、Spring Boot 核心模块
        • 1、spring-boot
        • 2、spring-boot-actuator-autoconfigure
        • 3、spring-boot-actuator
        • 4、spring-boot-autoconfigure
        • 5、spring-boot-cli
        • 6、spring-boot-dependencies
        • 7、spring-boot-devtools
        • 8、spring-boot-docs
        • 9、spring-boot-parent
        • 10、spring-boot-properties-migrator
        • 11、spring-boot-starters
        • 12、spring-boot-test
        • 13、spring-boot-test-autoconfigure 模块
        • 14、spring-boot-tools 模块


一、spring-boot-project 包介绍

1、Spring Boot 源码构成

Spring Boot v2.1.0.RELEASE版本 源码地址:https://github.com/spring-projects/spring-boot/tree/v2.1.0.RELEASE

image-20221129025723993

可以看到 SpringBoot2.x 的源码主要包含 4 个包:spring-boot-project、spring-boot-samples、spring-boot-samples-invoker、spring-boot-test

  • spring-boot-project:为 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码
  • spring-boot-samples / spring-boot-samples-invoker:为 springboot 的案例包,在高版本后会删除此包
  • spring-boot-test:为 springboot 的测试包,包含了系统集成测试、部署测试、冒烟测试

2、Spring Boot 核心技术包(spring-boot-project)

我们知道 spring-boot-project 是 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码:

image-20221129025124772

二、Spring Boot 核心模块

1、spring-boot

spring-boot 包含模块:spring-core、spring-context

spring-boot 是 SpringBoot 的主模块,也是支持其他模块的核心模块,主要包含以下几点:

  • 提供了一个启动 Spring 应用的主类,并提供了一个相当方便的静态方法,它的主要是作用是负责创建和刷新 Spring 容器的上下文;
  • 内嵌式的并可自由选择搭配的 Web 应用容器,如:Tomcat、Jetty、Undertow 等;
  • 提供一个很方便的 Spring 容器上下文初始化器,包括合理记录日志默认参数的支持;
  • 对配置外部化的支持。

2、spring-boot-actuator-autoconfigure

spring-boot-actuator-autoconfigure 提供了 spring-boot-actuator 的自动配置功能。

3、spring-boot-actuator

当系统运行时,我们想要了解系统运行的情况,比如程序是否存活、Jvm 状态怎么样。这时就需要有相应的对外接口,来让我们能方便的、自动的获取这些信息,这就是 Actuator 提供的功能。

spring-boot-actuator 是 spring-boot 周边组件之一,主要是用来查询或监控 spring-boot 项目各种组件、各种维度的度量指标,比如环境变量信息、日志级别、spring bean 信息、组件(redis、mq、db)健康状态等,可以通过 jmx 技术或者 http 技术来使用 actuator。

4、spring-boot-autoconfigure

spring-boot-autoconfigure 使 SpringBoot 可以根据类路径下的内容自动执行一些公共的大型应用程序,并且提供的 @EnableAutoConfiguration 注解启用 Spring 上下文的自动配置的功能。

spring-bootspring-boot-autoconfigure 是 SpringBoot 最重要的两个模块。

5、spring-boot-cli

Ps:可能很多 Java 程序员做了很久的 Spring Boot 开发,却并不知道 Spring Boot 居然也有命令行工具。

SpringBoot 的命令行工具,用于编译和运行 Groovy 源程序,可以非常简单地编写和运行应用程序。它还可以监控文件,并在发生更改后自动重新编译并重新启动应用程序。

spring-boot-cli 具有以下点

  • 它可以用来快速启动 Spring 。
  • 它可以运行 Groovy 脚本,开发人员不需要编写很多样板代码,只需要关注业务逻辑。
  • Spring Boot CLI 是创建基于 Spring 的应用程序的最快方法。

6、spring-boot-dependencies

spring-boot-dependencies 管理着我们使用的大部分依赖版本,spring-boot-parentspring-boot-starter-parent 都继承了 spring-boot-dependencies 所以我使用时,只要头部引入了父类(spring-boot-starter-parent ),就会发现有些依赖不需要写版本号。

spring-boot-dependenciesdependencyManagement 进行依赖管理,在 pluginManagement 中进行插件管理。

7、spring-boot-devtools

spring-boot-devtools 开发者工具模块,可以使 Spring Boot 应用支持热部署(修改了代码自动重启应用),提高开发者的开发效率,无需手动重启 Spring Boot 应用。

这个模块的功能是可选的,只限于本地开发阶段,当打成整包运行时这些功能会被禁用。

8、spring-boot-docs

提供 Spring Boot 文档里的一些示例?

9、spring-boot-parent

其他项目的 parent,继承了 spring-boot-dependencies

10、spring-boot-properties-migrator

帮助开发者从 Spring Boot 1 迁移到 Spring Boot 2 。

11、spring-boot-starters

Spring Boot Starters 是一组方便的依赖描述符,您可以将它们包含在您的应用程序中。您可以获得所需的所有 Spring 和相关技术的一站式服务,而无需搜索示例代码和复制粘贴大量依赖项描述符。

例如,如果想使用 Spring 和 JPA 进行数据库访问,只需将 spring-boot-starter-data-jpa 这一依赖项包含在项目中就可以开始了。

12、spring-boot-test

spring-boot-test 模块,是 SpringBoot 测试模块,为应用测试提供了许多非常有用的核心功能。

spring-boot-test 模块,为 Spring Boot 提供测试方面的支持,例如说:

  • SpringBootTestRandomPortEnvironmentPostProcessor 类,提供随机端口。
  • org.springframework.boot.test.mock.mockito 包,提供 Mockito 的增强。

13、spring-boot-test-autoconfigure 模块

提供了 spring-boot-test 的自动配置功能。

14、spring-boot-tools 模块

spring-boot-tools 模块,它是 Spring Boot 提供的工具箱,其内有多个子 Maven 项目。

注意哟,我们这里说的工具箱,并不是我们在 Java 里的工具类。

举个例子:其子模块 spring-boot-maven-plugin:提供 Maven 打包 Spring Boot 项目的插件。

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

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

相关文章

SpringCloud-Geteway之限流,熔断(超详细篇)

目录 一,Sentinel--服务容错 1.1 高并发带来的问题 1. 使用压测工具,对请求进行压力测试 2.修改配置文件中tomcat的并发数 1.2 服务雪崩效应 1.3 常见容错方案 1.4 Sentinel入门 什么是Sentinel 微服务集成Sentinel 安装Sentinel控制台 实现一个接口的限…

QTextLine、QGlyphRun、QTextLayout

QGlyphRun 一、描述 此类提供对字体中内部字形的直接访问。在某些情况下,开发人员可以对特定字体中的字形绘制到屏幕上进行更低级的控制。 当Qt显示以Unicode编码的文本字符串时,它会将Unicode点转换为基于字体的字形索引列表和位置列表。QGlyphRun 提…

企业对于源代码加密需求分析

需求 随着企业信息化发展的日益增长,软件行业厂商之间的竞争也愈加白热化,加上国内对知识产权的不够重视、山寨模仿产品的横行。保护源代码、保证企业的核心竞争力,成为众多软件研发企业的第一要务。那么企业应该如何保证源代码的安全呢&…

[附源码]计算机毕业设计常见Web漏洞对应PC应用系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

HTTP缓存机制(Cache-Control)

文章目录HTTP缓存机制HTTP缓存机制 HTTP 协议通常应用于分布式信息系统,所谓分布式信息系统,是指以计算机网络为基础,将系统的数据与功能分别布置在不同的地方,然后再通过网络将数据与功能连接的信息系统。由于系统需要处理大量的…

世界杯期间我使用Python生成二维码“为中国队辟谣”

二维码介绍 二维码本质上,就是一段字符串,我们可以把任意字符串,制作成一个二维码图片。在生活中,使用二维码更多的是一个URL(网址)。 引入 qrcode库 qrocde库网址:qrcode PyPI 进入网址之后…

[附源码]计算机毕业设计贷款申请审核管理系统论文Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

本地字节序与网络字节序的相互转换(IP地址、端口号)

一般数据在内存中是按照字节存储的,存储的方式分为大端和小端。在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式。因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! 如果当前主机…

年产3000吨原味奶糖生产车间工艺设计

目 录 摘 要 I Abstract II 1绪论 1 1.1原味奶糖的概念及其功能特性 1 1.2国外原味奶糖的现状 3 1.3我国的原味奶糖现状及开发前景 4 1.4原味奶糖原料的生产情况 4 2工艺流程设计 6 2.1 原味奶糖的生产工艺 6 2.1.1 溶糖与混合 7 2.1.2 连续真空薄膜熬糖 7 2.1.3 混合 8 2.1.4 …

阿里国际站-唤端技术的探索与演进

作者:黄昭 阿里ICBU买家增长技术团队 近几年用户增长领域APP推广发展迅猛,而唤端就是其中的重要技术。通过唤端拉新/促活不仅能能够将三方流量规模做大,同时二方流量也能有效利用,给网站不断带来商机,本文将为大家详细…

UE4虚幻引擎关于事件分发器的使用!

UE4虚幻引擎关于事件分发器的使用! 首先,这次就讲一下,事件分发器,在UI,Pawn,子actor如何进行事件传递! 首先!我们如果要使用事件分发器的原因是什么! 第一&#xff0…

Django(11):后台管理系统

目录后台管理系统基本操作管理平台的基本操作数据模型的注册和管理数据模型管理后台管理系统操作Xadmin管理平台Django内置了自己的后台管理系统,包含数据库管理和良好的界面。后台管理系统基本操作 在我们前面创建Django项目时,默认会有许多应用组件&a…

一次nginx “time out”故障排查

研发请求协助排查一个nginx故障。 描述如下: 在内部环境测试没问题。 打包到生产环境后,访问nginx接口地址超时。 研发比对后怀疑是nginx版本不一致导致。内部版本1.23.2,生产环境1.23.1. 收到信息第一感觉不是nginx的问题。不过先测试一…

五年测试经验,从二线到一线,下定决心一定要转自动化测试

一七年毕业以来自己工作也快三年左右了,自己最开始其实是想找java开发的,大学的毕设也是用jsp写的一个简单的web网站,无奈面试总被刷而且遇到了大量的培训机构。于是乎就转入软件测试这个行业。没想到啊转眼间一干就三年多了。 第一家公司 …

基于风驱动算法优化的lssvm回归预测-附代码

基于风驱动算法优化的lssvm回归预测 - 附代码 文章目录基于风驱动算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于风驱动算法优化的LSSVM4.测试结果5.Matlab代码摘要:为了提高最小二乘支持向量机(lssvm)的回归预测准确率&#xf…

物联网开发笔记(57)- 使用Micropython开发ESP32开发板之控制ESP32-CAM摄像头

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制ESP32-CAM摄像头。 二、环境 ESP32 ESP32-CAM摄像头 Thonny IDE 几根杜邦线 ESP32-CAM是一个开发板,它上面集成了Camera摄像头模块,可以直接用Micropython进行操作。从MicroPython官网下载的固…

语音处理的线性预测

线性预测是几乎所有现代语音编码算法的基础 – 手机 – 网络电话 (VOIP) – 军事通讯 线性预测假设语音信号的每个样本都可以从 P 个先前样本的加权和中预测出来,利用平稳性假设产生的冗余,线性预测允许数百个样本的语音帧仅由 10-15 个“预测系数”(a1 …

Java搭建宝塔部署实战毕设项目基于SSM的房间管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的毕设项目SSM房间管理系统源码,可以拿来做毕业设计,或者在这基础上进行二开,感兴趣的朋友自行下载来学习一下,本期把这套系统分享给大家…

华人运通与BlackBerry达成合作, 打造未来数字生命GT——高合HiPhi Z

BlackBerry近日宣布,中国领先的未来智能交通产业的创新型出行科技公司——华人运通,选择了BlackBerry QNX为华人运通的第二款旗舰车型高合HiPhi Z保驾护航,打造其自动驾驶域控制器与数字座舱域控制器。 基于BlackBerry QNX Neutrino 实时操作…

Servlet:狂神实例源码分析

目录servlet源码:servlet01启动测试总结servlet 上面就是一个web项目的典型目录,servlet处理request和response的逻辑web.xml管理路由信息index.jsp作为首页访问的页面,jsp是java server page可以认为用java和html混合写前端 源码&#xff1…