Moví mi proyecto de Spring Boot 2.1.9 a 2.2.0. Al comenzar el proyecto me enfrento a los siguientes error
mensajes.
Lo que podría haber causado, tampoco lo estoy usando hateoas
en mi pom.xml
archivo.
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
fuente
fuente
mvn dependency:tree
y verifique si algo más está atrayendo laHateoas
dependencia. IRC Si usa Spring Data REST que depende de Spring Hateoas.Respuestas:
Tuve este problema con
Swagger + HATEOAS
en mispring-boot
solicitud.La solución se da a continuación (edite su clase de configuración Swagger):
fuente
_links
se activalinks
y_embedded
se activacontent
en la respuesta, por lo tanto, la mayoría de mis pruebas de mvcMock que comprueban_links
están fallando y la API es diferente de lo que se proporciona de fábrica con spring-boot-starter- hateosHalLinkDiscoverer
clase en lugar deCollectionJsonLinkDiscoverer
no hacer el truco y aún así mis pruebas fallan porque los enlaces se representan comolinks
y no_links
, así como el contenido se representa comocontent
y no lo esperado_embedded
@EnableHypermediaSupport(type=EnableHypermediaSupport.HypermediaType.HAL)
que debe incluirorg.springframework.hateoas.config.EnableHypermediaSupport
. No estoy seguro si importa, pero tengo como dependencia: spring-boot-starter-hateoasMejor solución
Agregue el siguiente código en la clase SwaggerConfig
fuente
Para mí, este enlace me ayudó: https://github.com/spring-projects/spring-hateoas/issues/731
En pocas palabras, agregué a mis dependencias:
fuente
prueba esta versión 2.6.1, ya resuelvo de esta manera
fuente
El problema al que me enfrento cuando uso
con springfox swagger
si echa un vistazo a las dependencias de hateoas de primavera, existe una dependencia
spring-plugin-core
con la versión2.0.0.RELEASE
pero uso de dependencia más presumido
spring-plugin-core
con la versión1.2.0.RELEASE
.spring-boot tiene un conflicto en la creación de beans, por lo que debe unificar la
org.springframework.plugin
versión para que Spring lo vea. Si elige2.0.0.RELEASE
swagger, el bot podrá compilar,entonces la versión
1.2.0.RELEASE
funcionará para ambas dependencias, comoDespués de eso, necesita una clase de configuración para iniciar beans
swagger
yhateoas
así:fuente
Así que en realidad quería el soporte de hateoas y tuve el mismo problema. Resultó que esto sucede si tienes
en vez de
fuente
Si lo desea
Swagger
, pero puede comprometerseHATEOAS
, simplemente elimine la dependencia HATEOAS y agregue:fuente
Resuelto, estaba sucediendo debido a la integración cuando Swagger + HATEOAS se utilizó con Spring Boot 2.2.4.
y a continuación están las dependencias swagger
fuente
Eliminé estas dependencias como solución y trabajé:
por favor avíseme si funcionó para usted.
fuente
Para los
2.1.3.RELEASE
usuarios de la versión de arranque Spring , las siguientes dependencias funcionan bien para hateoas + swagger:fuente
Este tipo de problema está ocurriendo debido a una nueva característica de Hateoas.
Si desea resolver este problema, simplemente incruste la siguiente línea de códigos en su archivo de configuración de swagger.
Creo que esto resolverá tu problema como resolvió el mío.
fuente