今天自己写的项目,写了一个健康检查controller接口。其中 有一个 info 接口,想去打印一下服务的信息,需要引入 DiscoveryClient 和 Registration 两个类。
这两个类看起来都是 spring Cloud 的。
我就要引入SpringCloud 依赖,于是翻看我之前的项目怎么引入的 SpringCloud依赖。
发现每个子服务中都添加了如下依赖,好吧,我已经忘了 dependencyManagement 的作用了

问AI一下 dependencyManagement 作用。

说的好像没说,这里的1比较奇怪,意思是子项目继承了依赖,但是还需要重新声明才能使用??
于是我又打开了两个已经上线项目的代码看看 dependencyManagement 如何用的
发现在项目的根pom中定义了非常多的依赖,包括 SpringCloud 以及 SpringCloud Alibaba,这里就不贴了和上面图片一致,只是多了一个cloud-Alibaba的依赖(在下面你可以看到)
还有 guava、hutool 这些工具类,另外一个项目也是如此,但是至于说 dependencyManagement 这个标签里面定义了多少依赖,两个项目是不同的 。
那这里有一个疑问 dependencyManagement 里面定义的依赖,子项目可以直接用吗,还是需要重新在子项目声明一遍,但是不用定义version。也就是上面AI回答的第一点,做个试验好了?
行为:我把子项目中的guava依赖注释掉,在父项目的 pom 的 dependencyManagement 中定义。
结果:子项目启动报错,验证了我的想法,就是 需要重新在子项目声明一遍,但是不用定义version。

这个其实很好理解,就像 lombok一样,参考我这篇文章。
https://blog.youkuaiyun.com/qq_42704130/article/details/142093659

因为我所有的项目的根pom依赖于

ok,所以你懂我意思。

结论:dependencyManagement 的作用就是控制依赖的版本,子pom声明的时候无需再指定版本。
回到之前的问题上来,我想引入 springCloud 依赖,到底应该引入什么,都应该在哪里引入。
第一:毫无疑问,根pom这样引入是必须的(后续我既要用gateway openfegin这种属于cloud的组件,也要用nacos这种属于 cloud alibaba 的组件,所以我选择都引入)
至于说版本问题,之前记得cloud版本和SpringBoot版本是有对应关系的。官网上记得有,去看看。
进入 spring.io 选哪个projects,然后选 springCloud 往下拉,就能看见。



再来看看 cloud alibaba和boot的依赖对应关系

再点一下 Learn 看看,点一个最新的 Reference Doc. 看看




说实在的,这个tag打的也是乱七八糟的,稀碎

引入即可。
最终:
回到开头,我最开始的需求是引入 DiscoveryClient 和 Registration 两个类。这两个依赖都属于注册中心的,我必须在子模块中引入注册中心的依赖。
这里就涉及到注册中心的选型,我这里想用nacos,于是我要引入 nacos的依赖。 这个参考刚刚alibaba的说明文档就可以了。

点击这个,然后往下拉。

最低0.47元/天 解锁文章
1429

被折叠的 条评论
为什么被折叠?



