一、前言:
拉取了一次git之后,项目的用户模块不知怎地启动就报错。见下图:这个错误消息表明在Spring应用程序的上下文中存在一个问题,具体是关于InetUtilsProperties
类型的bean的定义。错误指出有两个InetUtilsProperties
类型的bean被找到,这导致了Spring在自动装配时无法决定使用哪一个
然后我也查看了网上的一些文档,知道了大概是因为SpringBoot或SpringCloud版本的问题,与spring-cloud-starter-alicloud-oss不兼容。我这篇是没有更换版本,而是直接使用aliyun-sdk-oss依赖。
<!-- OSS依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
二、解决步骤:
1.clear install 之后没有报错信息,说明我们的代码基本是无误的,重心应该偏向于springboot版本或者pom当中的依赖。(我爱无脑clean install 就是爽)
2. 查看pom依赖发现spring-cloud-starter-alicloud-oss依赖并不是我导入的:
3.接下来我去查看了pom依赖关系树发现aliyun-sdk-oss依赖有红色虚线箭头(说明有两个sdk-oss依赖循环了)你看看 多的一个oss依赖是spring-cloud-starter-alicloud-oss带进来的(为什么带进来最后面有解释)。
4. 先给注释掉
5.再次查看pom依赖关系图,此时的oss依赖有shop-user-server提供 且只有一个。
6.原神 启动!!
三、总结:
当你将 spring-cloud-starter-alicloud-oss
添加到你的项目中时,Maven 会解析这个依赖,并自动下载和添加它所需的所有传递性依赖,包括 aliyun-sdk-oss
。这就是为什么在项目中看到了两个 aliyun-sdk-oss
依赖的原因:一个是可以直接添加的( aliyun-sdk-oss
),另一个是 spring-cloud-starter-alicloud-oss
传递性添加的。
如有不足,敬请雅正!