J'ai déplacé mon projet de Spring Boot 2.1.9 vers 2.2.0. Au démarrage du projet, je suis confronté aux error
messages ci-dessous .
Ce qui aurait pu causer, je n'utilise pas non plus hateoas
dans mon pom.xml
fichier.
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
la source
la source
mvn dependency:tree
et vérifiez si quelque chose d'autre tire dans laHateoas
dépendance. IRC Si vous utilisez Spring Data REST qui dépend de Spring Hateoas.Réponses:
J'ai eu ce problème avec
Swagger + HATEOAS
dans maspring-boot
demande.Le correctif est donné ci-dessous (modifiez votre classe de configuration Swagger):
la source
_links
est transformélinks
et_embedded
est transformé encontent
réponse, donc la plupart de mes tests mvcMock vérifiant l'_links
échec et l'API est différente de ce qui est fourni avec Spring-boot-starter- hateosHalLinkDiscoverer
classe au lieu deCollectionJsonLinkDiscoverer
ne pas faire l'affaire et mes tests échouent toujours parce que les liens sont rendus commelinks
et non_links
, ainsi que le contenu est rendu commecontent
et non attendu_embedded
@EnableHypermediaSupport(type=EnableHypermediaSupport.HypermediaType.HAL)
vous devez inclureorg.springframework.hateoas.config.EnableHypermediaSupport
. Je ne sais pas si c'est important mais j'ai comme dépendance: spring-boot-starter-hateoasMeilleure solution
Ajouter le code ci-dessous dans la classe SwaggerConfig
la source
Pour moi, ce lien a aidé: https://github.com/spring-projects/spring-hateoas/issues/731
En un mot, j'ai ajouté à mes dépendances:
la source
essayez cette version 2.6.1, je résout déjà de cette façon
la source
Le problème rencontré avec moi lorsque j'utilise
avec Springfox Swagger
si vous regardez les dépendances de hateoas au printemps, il y a une dépendance
spring-plugin-core
avec la version2.0.0.RELEASE
mais l'utilisation de la dépendance swagger
spring-plugin-core
avec la version1.2.0.RELEASE
.Spring-Boot a un conflit sur la création du bean, vous devez donc unifier la
org.springframework.plugin
version pour que Spring la voit. Si vous choisissez2.0.0.RELEASE
swagger, le bot pourra compiler,donc la version
1.2.0.RELEASE
fonctionnera pour les deux dépendances, commeAprès cela, vous avez besoin d'une classe de configuration pour lancer des beans pour
swagger
ethateoas
comme ceci:la source
Donc, je voulais en fait un soutien aux hateoas et j'ai eu le même problème. Il s'est avéré que cela se produit si vous avez
au lieu de
la source
Si vous voulez
Swagger
, mais pouvez faire des compromis avecHATEOAS
, alors supprimez simplement la dépendance HATEOAS et ajoutez:la source
Résolu, cela se produisait en raison de l'intégration lorsque Swagger + HATEOAS était utilisé avec Spring Boot 2.2.4.
et ci-dessous sont les dépendances swagger
la source
J'ai supprimé ces dépendances comme solution de contournement et j'ai travaillé:
s'il vous plaît laissez-moi savoir si cela a fonctionné pour vous.
la source
Pour les
2.1.3.RELEASE
utilisateurs de la version de démarrage Spring , les dépendances suivantes fonctionnent correctement pour hateoas + swagger:la source
Ce type de problème se produit en raison d'une nouvelle fonctionnalité de Hateoas.
Si vous souhaitez résoudre ce problème, intégrez simplement la ligne de codes suivante dans votre fichier de configuration swagger.
Je pense que cela va résoudre votre problème car il a résolu le mien.
la source