問題描述
在學習分布式文件存儲組件 -- 阿里雲OSS(object storage service)時,有一種上傳方式是“普通上傳方式”,可以在導入包后,直接@autowire注入ossClient,然后調用各種api即可。
但是,啟動后報錯類型為“com.aliyun.oss.OSSClient”的bean並沒有找到
解決方案
根據springboot自動注解原理:【重點】自動裝配原理 - SpringBoot主程序,找到aliyun oss包下的META-INF/spring.factories文件,發現有一個EnableAutoConfiguration的類 -- OssContextAutoConfiguration.java,
里面有個@bean的類型是OSS (是一個interface)
原因很清楚了,只有一個類型為OSS接口的bean,並沒有類型為OSSClient實現類的bean
所以有兩個方案解決:
- 可以把@autowire(根據類型注入),改為@resource (根據名稱注入)
- 也可以把自己的代碼中注入的類型,改為接口類型OSS,而不是實現類型OSSClient
參考文獻
問題鏈接:https://www.bilibili.com/video/BV1np4y1C7Yf?p=63 17:30左右開始