SpringBoot常见starter

简化配置、开箱即用、快速集成.

举个例子。redis-starter,会根据luttuce、redisson、jedis 的变化实例化不同的客户端链接。实现方式是使用了@Conditional系列注解

Redis的三个框架:Jedis,Redisson,Lettuce

spring-boot的各个starter. 是spring-boot场景启动器,后面跟的单词就是场景,比如说后面跟web,就是导入web场景的所有依赖。

1. spring-boot-starter

Spring Boot的核心启动器,包含了自动配置、日志和YAML

2. spring-boot-starter-parent

控制版本信息

3. spring-boot-starter-web

web的场景,自动帮我们引入了web模块开发需要的相关jar包

4. spring-boot-starter-test

springboot程序测试依赖,如果是自动创建项目默认添加

5. spring-boot-starter-actuator

用于支持 SpringBoot 应用的监控。

Actuator 这个词即使翻译过来也不是很容易理解(比如翻译成“制动器;传动装置;执行机构”等)。

为了能够感知应用的运行状态,我们通常会:

1
2
3
4
5
1. 设置一些监控指标并采集分析
2. 监控指标的采集需要在应用内部设置相应的监控点
3. 这类监控点一般只是读取状态数据,我们通常称它们为 Sensor,即中文一般称为“传感器”的东西。
4. 应用的运行状态数据通过 Sensors 采集上来之后,我们通常会有专门的系统对这些数据进行分析和判断。
5. 一旦某个指标数据超出了预定的阈值,这往往意味着应用的运行状态在这个指标上出现了“不健康”的现象,我们希望对这个指标进行调整,而为了能够执行调整,我们需要预先在应用内部设置对应的执行调整逻辑的控制器。

比如,直接关闭的开关,或者可以执行微调甚至像刹车一样直接快速拉低某个指标值的装置,这些控制器就称为 Actuator。虽然我们日常天天在说“监控,监控”,但实际上“监”跟“控”是两个概念,Sensor 更多服务于“监”的场景,而 Actuator 则服务于“控”的场景。

SpringBoot的Endpoint主要是用来监控应用服务的运行状况,并集成在Mvc中提供查看接口。

spring-boot-starter-actuator 自动配置模块默认提供了很多 endpoint,虽然自动配置模块名为 spring-boot-starter-actuator,但实际上这些 endpoint 可以按照“监”和“控”划分为两类:

Sensor 类 endpoints 和 Actuator 类 endpoints.

Sensor:感知器,传感器 类型。 Actuator:执行器 类型

1
2
3
4
5
6
7
----- Sensor
autoconfig - 提供一份 SpringBoot 的自动配置报告,告诉我们哪些自动配置模块生效了,以及哪些没有生效,原因是什么。
beans - 给出当前应用的容器中所有 bean 的信息。
configprops - 对现有容器中的 ConfigurationProperties 提供的信息进行“消毒”处理后给出汇总信息。
info - 提供当前 SpringBoot 应用的任意信息,我们可以通过 Environment 或者 application.properties 等形式提供以 info. 为前缀的任何配置项,然后 info 这个 endpoint 就会将这些配置项的值作为信息的一部分展示出来
metrics - 当前 SprinBoot 应用的 metrics 信息。
trace - 当前 SpringBoot 应用的 trace 信息。
1
2
3
----- Actuator
shutdown - 用于关闭当前 SpringBoot 应用的 endpoint。
dump - 用于执行线程的 dump 操作。

参考: spring-boot-starter-actuator与应用监控,Spring Boot提供的监控和管理接口-2.0

endpoints 属于 spring-boot-starter-actuator 提供的主要功能之一.除此之外,spring-boot-starter-actuator 还提供了更多针对应用监控的支持和实现方案。

上面主要介绍了spring-boot-starter-actuator。

6. 各Spring-Boot-Starters介绍

Spring Boot application starters

问题: 以上starter其实已经很完备了,为什么都要自定义。

简化配置、开箱即用、快速集成、灵活装配使用。

自定义starter

Spring Boot入门教程(三十一): 自定义Starter

最详细的自定义Spring Boot Starter开发教程

SpringBoot使用AutoConfiguration自定义Starter