Springboot
一、SpringBoot核心功能
SpringBoot是一个简化Spring初始化搭建以及开发过程的框架。SpringBoot主要的核心功能:
- 自动装配
- Starter
- Actuator
二、SpringBoot自动装配机制
SpringBoot自动装配主要是基于注解编程和约定优于配置思想来设计的。我们只需要在SpringBoot启动类上添加添加@ SpringBootApplication注解就能开启自动装配。
- 自动装配的实现
- 底层是使用@ EnableAutoConfiguration注解来实现的,归纳以下步骤:
- 首先启动依赖组件的时候,组件必须包含@ Configuration的配置类,这个配置类中声明@ Bean注解
- 如果是第三方包,SpringBoot采用SPI机制,则只需要在/META_INF/目录下增加spring.factories配置文件,SpringBoot会根据约定规则使用SpringFactoriesLoader来加载配置文件内容
- 获取到配置文件后,会装配配置文件里面的Bean
- 底层是使用@ EnableAutoConfiguration注解来实现的,归纳以下步骤:
-
@ EnableAutoConfiguration注解的原理,利用ImportSelector接口来完成动态加载
:
- @EnableAutoConfiguration —–> @Import(AutoConfigurationImportSelector.class)—–> AutoConfigurationImportSelector 类
- AutoConfigurationImportSelector这个类实现了ImportSelector接口,主要实现2个逻辑:
- 扫描并加载配置文件
- 返回需要装配的Bean数组
三、SpringBoot约定优于配置
- 约定优于配置是一种软件设计规范,核心思想就是减少软件开发人员对配置的维护,更加聚焦在业务逻辑上
- SpringBoot就是这一理念的产物
- 比如传统的Spring开发需要做很多配置,现在SpringBoot不再需要去做这些配置,会自动帮我们完成,这就是约定由于配置的提现
- 其他提现:
- 自动装配中,约定扫描路径下的spring.factories
- Starter启动依赖,它能帮我们管理所有Jar包
- 等
- 官方组件命名格式统一:spring-boot-starter-xxxx
- 官方组件不需要spring.factories文件定义,因为统一维护在spring-boot-configuration的jar包里面
- 第三方命名格式:xxxx-spring-boot-starter
四、SPI机制(Service Provider Interface)
SPI是一种服务发现机制,它提供了一种服务接口与其实现解耦的方式。通过SPI机制,开发者可以动态地发现和加载服务实现类,而无需在代码中硬编码这些实现类的名字或位置。这使得应用程序能够灵活地支持不同的服务提供商。
- 工作原理
- 定义服务接口:首先需要定义一个服务接口,所有服务提供者都必须实现这个接口
- 创建服务提供者:不同的服务提供者分别实现该接口,并将其打包为 JAR 文件
- 配置服务提供者:
- 每个服务提供者都需要包含一个特定的配置文件,位于 META-INF/services/ 目录下,文件名是服务接口的全限定名。
- 文件内容则是该服务接口的所有具体实现类的全限定名,每行一个。
- 使用 ServiceLoader 加载服务
- 当需要使用某个服务时,可以通过 ServiceLoader.load(YourServiceInterface.class) 方法来加载所有的服务提供者实例。