gpt4 book ai didi

java - SpringFox 依赖破坏了我的 Spring 上下文

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:42 24 4
gpt4 key购买 nike

直到最近,我的 swagger 文档大部分都是免费的,因为我一直在使用 Camel 公开我的 REST API。我不得不放弃 Camel,因为它在与 Jackson 的配合上存在一些问题,所以我正在尝试设置 SpringFox。不幸的是,简单地添加 SpringFox 作为依赖项会以某种方式破坏我的 Spring 上下文,并抛出一个模糊且不正确的错误,声称我没有明确的 ObjectMapper bean,而我确实有 - 无法让 Camel 使用所述 bean 是我必须删除的原因它。

为了清楚起见,不做任何代码更改,只需添加以下依赖项:

compile group: "io.springfox", name: "springfox-swagger2" version: "2.0.2"

导致问题。我正在使用 Jackson 2.5.3 和 Spring Boot 1.2.3.RELEASE

FWIW 这是堆栈跟踪中有趣的部分:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration$HypermediaConfiguration$HalObjectMapperConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.fasterxml.jackson.databind.ObjectMapper org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration$HypermediaConfiguration$HalObjectMapperConfiguration.primaryObjectMapper; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.fasterxml.jackson.databind.ObjectMapper] is defined: expected single matching bean but found 2: objectMapper,_halObjectMapper
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.test.SpringApplicationContextLoader.loadContext(SpringApplicationContextLoader.java:101)
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68)
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86)
... 45 more

最佳答案

我遇到了完全相同的问题。我终于能够将其缩小到根本原因,就我而言,这就是@Dilip 在上面指出的原因。

不知何故,当我包含 springfox 依赖项时,HypermediaSupport 在我的项目中被启用,即使我的项目中没有明确的 @EnableHypermediaSupport 注释。我认为 Spring 会自动启用它,因为我的主 java 配置类中有 @EnableAutoConfiguration

我能够通过我的 java 配置类中的 @EnableAutoConfiguration(exclude = {HypermediaAutoConfiguration.class}) 注释排除“HypermediaAutoConfiguration”来解决这个问题。

在我完成这一步之后,异常就消失了。希望这可以帮助。

关于java - SpringFox 依赖破坏了我的 Spring 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31307883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com