您好,登錄后才能下訂單哦!
本篇內容主要講解“用SpringBoot排除自動裝配某個class來解決jar包沖突”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“用SpringBoot排除自動裝配某個class來解決jar包沖突”吧!
最近和某第三方平臺技術對接時, 由于對方的 restful api 還不完善, 于是被迫選擇了sdk方式.
果然, 在使用SpringBoot集成sdk時, 遇上了讓人頭疼的jar包沖突.
對方的核心jar包依賴了gson-2.2.4.jar, 與SpringBoot自己所依賴的高版本gson發生沖突, 導致SpringBoot在低版本的gson下啟動失敗:
Caused by: java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder;
開始解決沖突...
首先, 在pom下排除了第三方公司依賴的gson-2.2.4.jar, SpringBoot可以正常啟動了. 但是, 對方sdk在高版本的gson下也無法運行:
Caused by: java.lang.ClassNotFoundException: com.google.gson.JsonObject;
于是, 又想著去降低SpringBoot的版本, 進而降低其依賴的gson版本, 最后發現最老的SpringBoot1.4所依賴的gson都達到了2.7, 此路不通.
此時, 好像只能聯系第三方公司了, 讓對方把gson升級一下然后重新打jar包發過來.
待定...
期間一直納悶一個問題: “springboot默認使用jackson的json庫, 為什么啟動時還要用gson?”
最后, 經人點撥, 得以解惑: springboot確實沒用gson, 但是啟動時會自動裝配它, 以備用.
如果你不用, 可以通過exclude排除自動裝配, 如下方式:
@SpringBootApplication(exclude = {GsonAutoConfiguration.class})
SpringBoot啟動時裝配了很多類, 詳見spring-boot-autoconfigure-2.x.x.RELEASE.jar , 對于不用的, 可排除之.
到此,相信大家對“用SpringBoot排除自動裝配某個class來解決jar包沖突”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。