SpringBoot - 通過自動裝配原理,解決注入失敗問題


問題描述

在學習分布式文件存儲組件 -- 阿里雲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

 

所以有兩個方案解決:

  1. 可以把@autowire(根據類型注入),改為@resource (根據名稱注入)
  2. 也可以把自己的代碼中注入的類型,改為接口類型OSS,而不是實現類型OSSClient

 

參考文獻

問題鏈接:https://www.bilibili.com/video/BV1np4y1C7Yf?p=63 17:30左右開始

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM