Я переместил свой проект с весенней загрузки 2.1.9 на 2.2.0. При запуске проекта сталкиваюсь с error
сообщениями ниже .
Что могло вызвать, я не использую hateoas
в моем pom.xml
файле либо.
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.plugin.core.PluginRegistry<org.springframework.hateoas.client.LinkDiscoverer, org.springframework.http.MediaType>' available: expected single matching bean but found 17: modelBuilderPluginRegistry,modelPropertyBuilderPluginRegistry,typeNameProviderPluginRegistry,syntheticModelProviderPluginRegistry,documentationPluginRegistry,apiListingBuilderPluginRegistry,operationBuilderPluginRegistry,parameterBuilderPluginRegistry,expandedParameterBuilderPluginRegistry,resourceGroupingStrategyRegistry,operationModelsProviderPluginRegistry,defaultsProviderPluginRegistry,pathDecoratorRegistry,apiListingScannerPluginRegistry,relProviderPluginRegistry,linkDiscovererRegistry,entityLinksPluginRegistry
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'linkDiscoverers' defined in class path resource [org/springframework/hateoas/config/HateoasConfiguration.class]: Unsatisfied dependency expressed through method 'linkDiscoverers' parameter 0; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.plugin.core.PluginRegistry<org.springframework.hateoas.client.LinkDiscoverer, org.springframework.http.MediaType>' available: expected single matching bean but found 17: modelBuilderPluginRegistry,modelPropertyBuilderPluginRegistry,typeNameProviderPluginRegistry,syntheticModelProviderPluginRegistry,documentationPluginRegistry,apiListingBuilderPluginRegistry,operationBuilderPluginRegistry,parameterBuilderPluginRegistry,expandedParameterBuilderPluginRegistry,resourceGroupingStrategyRegistry,operationModelsProviderPluginRegistry,defaultsProviderPluginRegistry,pathDecoratorRegistry,apiListingScannerPluginRegistry,relProviderPluginRegistry,linkDiscovererRegistry,entityLinksPluginRegistry
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration
required a single bean, but 17 were found:
- modelBuilderPluginRegistry: defined in null
- modelPropertyBuilderPluginRegistry: defined in null
- typeNameProviderPluginRegistry: defined in null
- syntheticModelProviderPluginRegistry: defined in null
- documentationPluginRegistry: defined in null
- apiListingBuilderPluginRegistry: defined in null
- operationBuilderPluginRegistry: defined in null
- parameterBuilderPluginRegistry: defined in null
- expandedParameterBuilderPluginRegistry: defined in null
- resourceGroupingStrategyRegistry: defined in null
- operationModelsProviderPluginRegistry: defined in null
- defaultsProviderPluginRegistry: defined in null
- pathDecoratorRegistry: defined in null
- apiListingScannerPluginRegistry: defined in null
- relProviderPluginRegistry: defined by method 'relProviderPluginRegistry' in class path resource [org/springframework/hateoas/config/HateoasConfiguration.class]
- linkDiscovererRegistry: defined in null
- entityLinksPluginRegistry: defined by method 'entityLinksPluginRegistry' in class path resource [org/springframework/hateoas/config/WebMvcEntityLinksConfiguration.class]
Pom
<properties>
<java.version>1.8</java.version>
<swagger-springfox.version>2.9.2</swagger-springfox.version>
<sonar.jacoco.execPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.execPath>
<jasypt-spring-boot-starter>2.1.1</jasypt-spring-boot-starter>
<logbook-spring-boot-starter>1.13.0</logbook-spring-boot-starter>
<assertj-swagger>0.8.1</assertj-swagger>
<jacoco-version>0.8.4</jacoco-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger-springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger-springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-web</artifactId>
<version>${swagger-springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-core</artifactId>
<version>${swagger-springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-data-rest</artifactId>
<version>${swagger-springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>${swagger-springfox.version}</version>
</dependency>
java
spring-boot
swagger-2.0
spring-hateoas
Viyaan Jhiingade
источник
источник
mvn dependency:tree
и проверьте, вытягивает ли что-то ещеHateoas
зависимость. IRC Если вы используете Spring Data REST, который зависит от Spring Hateoas.Ответы:
У меня была эта проблема
Swagger + HATEOAS
в моемspring-boot
приложении.Исправление приведено ниже (отредактируйте свой класс конфигурации Swagger):
источник
_links
превращаютсяlinks
и_embedded
превращаютсяcontent
в ответ, поэтому большинство моего mvcMock тестов , контролирующих_links
не удается и API отличается от того , что предусмотрено из коробки с пружинной загрузкой starter- hateosHalLinkDiscoverer
класс вместо того, чтобыCollectionJsonLinkDiscoverer
не делать трюк, и все же мои тесты терпят неудачу, потому что ссылки отображаются какlinks
и нет_links
, а также контент отображается какcontent
и не ожидалось_embedded
@EnableHypermediaSupport(type=EnableHypermediaSupport.HypermediaType.HAL)
вы должны включитьorg.springframework.hateoas.config.EnableHypermediaSupport
. Не уверен, что это имеет значение, но у меня есть зависимость: spring-boot-starter-hateoasЛучшее решение
Добавьте код ниже в классе SwaggerConfig
источник
Для меня эта ссылка помогла: https://github.com/spring-projects/spring-hateoas/issues/731
В двух словах я добавил к своим зависимостям:
источник
попробуйте эту версию 2.6.1, я уже решаю с этим способом
источник
Проблема, с которой я столкнулся при использовании
с пружинным чванством
если вы посмотрите на зависимости Spring hateoas, есть зависимость
spring-plugin-core
с версией2.0.0.RELEASE
но чванство использовать зависимость
spring-plugin-core
с версией1.2.0.RELEASE
.У Spring-Boot есть конфликт при создании bean-компонента, поэтому вам нужно унифицировать
org.springframework.plugin
версию, чтобы Spring ее увидела. Если вы выберете2.0.0.RELEASE
swagger, бот сможет скомпилироваться,так что версия
1.2.0.RELEASE
будет работать для обеих зависимостей, какПосле этого вам нужен класс конфигурации для инициализации bean-компонентов
swagger
иhateoas
вот так:источник
Так что я на самом деле хотел поддержки hateoas и имел ту же проблему. Оказалось, что это произойдет, если у вас есть
вместо
источник
Если вы хотите
Swagger
, но можете пойти на компромиссHATEOAS
, просто удалите зависимость HATEOAS и добавьте:источник
Решено, это происходило из-за интеграции, когда Swagger + HATEOAS использовался с Spring Boot 2.2.4.RELEASE
и ниже - чванские зависимости
источник
Я удалил эти зависимости как обходной путь и работал:
пожалуйста, дайте мне знать, если работал на вас.
источник
Для
2.1.3.RELEASE
пользователей загрузочной версии Spring для hateoas + swagger нормально работают следующие зависимости:источник
Такая проблема возникает из-за новой функции Hateoas.
Если вы хотите решить эту проблему, просто вставьте следующую строку кодов в файл конфигурации swagger.
Я думаю, что это решит вашу проблему так же, как и мою.
источник