温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

用SpringBoot排除自动装配某个class来解决jar包冲突

发布时间:2021-06-22 16:34:29 来源:亿速云 阅读:564 作者:chen 栏目:大数据

本篇内容主要讲解“用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包冲突”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI