SpringBoot引入Micrometer报“io.micrometer.prometheus.HistogramFlavor”

原因

io.micrometer.prometheus.HistogramFlavor是因为导入依赖时版本的问题,上面是我最初导入的依赖,去掉<version>1.1.4</version>就可以了,因为SpringBoot的父依赖已经帮你确定好了

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
	<groupId>io.micrometer</groupId>
	<artifactId>micrometer-registry-prometheus</artifactId>
	<version>1.1.4</version>
</dependency>

问题排查

最开始发现这个问题是点入了spring-boot-starter-actuator,发现它里面有一个关于Micrometer的写了1.9.7,然后开始怀疑micrometer-registry-prometheus依赖的版本有问题。然后去掉了依赖版本,刷新了一下Maven发现不写版本也可以运行,SpringBoot已经帮你定好了版本。
在这里插入图片描述
在这里插入图片描述
之后可以确定一下micrometer-registry-prometheus真实的版本,一路进parent进行。
在这里插入图片描述
在这里插入图片描述

正常进来这里就可以看见了,但这个藏的还挺深,得继续进micrometer-bom,之后就可以看见micrometer-registry-prometheus的版本了,确实是1.9.7。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

也有更快的方式,直接在Maven的依赖里看。
在这里插入图片描述

补充

顺便补充一下,parent类的东西。SpringBoot中有些依赖是不用写版本号的,因为继承了parent标签,人家SpringBoot就帮你定好了版本。
在pom.xml中,按住Ctrl点击spring-boot-starter-parent,进入后发现spring-boot-starter-parent 自身并没有定义dependencyManagement,而是继续依赖于了spring-boot-dependencies
在这里插入图片描述
先看一下spring-boot-starter-parent,它主要是添加了一些默认的配置,像指定了使用的 JDK 版本号,编码方式,还有一些比较高级的像资源过滤、插件配置等,具体可参考这篇文章
在这里插入图片描述
而进入spring-boot-dependencies你就可以看到SpringBoot提供的各种依赖的版本号了。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Fishermen_sail/article/details/129806994
今日推荐