成都创新互联网站制作重庆分公司

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

本篇内容主要讲解“用SpringBoot排除自动装配某个class来解决jar包冲突”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用SpringBoot排除自动装配某个class来解决jar包冲突”吧!

创新互联公司-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、成都服务器托管、等保安全、私有云建设等企业级互联网基础服务,联系热线:028-86922220

最近和某第三方平台技术对接时, 由于对方的 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包冲突”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享标题:用SpringBoot排除自动装配某个class来解决jar包冲突
本文网址:http://cxhlcq.com/article/jhcejd.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部