Ich habe mein Projekt von Spring Boot 2.1.9 auf 2.2.0 verschoben. Beim Starten des Projekts werden die folgenden error
Meldungen angezeigt.
Was hätte verursachen können, verwende ich auch nicht hateoas
in meiner pom.xml
Datei.
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
quelle
quelle
mvn dependency:tree
und überprüfen Sie, ob etwas anderes in derHateoas
Abhängigkeit zieht . IRC Wenn Sie Spring Data REST verwenden, das von Spring Hateoas abhängig ist.Antworten:
Ich hatte dieses Problem mit
Swagger + HATEOAS
in meinerspring-boot
Bewerbung.Das Update ist unten angegeben (bearbeiten Sie Ihre Swagger-Konfigurationsklasse):
quelle
_links
in schaltet wirdlinks
und_embedded
eingeschaltet ist incontent
der Antwort, daher die meisten meiner mvcMock Tests Überprüfung der_links
fehlschlagen und die API unterscheidet sich von was zur Verfügung gestellt aus der Box mit Feder-boot-Starter- HateosHalLinkDiscoverer
Klasse zu verwenden, anstattCollectionJsonLinkDiscoverer
den Trick nicht zu machen, und trotzdemlinks
_links
content
_embedded
@EnableHypermediaSupport(type=EnableHypermediaSupport.HypermediaType.HAL)
Sie es einschließen müssenorg.springframework.hateoas.config.EnableHypermediaSupport
. Ich bin mir nicht sicher, ob es wichtig ist, aber ich habe als Abhängigkeit: Spring-Boot-Starter-HateoasBeste Lösung
Fügen Sie den folgenden Code in die SwaggerConfig-Klasse ein
quelle
Für mich hat dieser Link geholfen: https://github.com/spring-projects/spring-hateoas/issues/731
Kurz gesagt, ich habe meine Abhängigkeiten ergänzt:
quelle
versuche diese version 2.6.1, die ich schon auf diese weise löse
quelle
Das Problem stand mir bei der Verwendung gegenüber
mit Springfuchs Prahlerei
Wenn Sie sich die Abhängigkeiten von Spring Hateoas ansehen, besteht eine Abhängigkeit von der
spring-plugin-core
Version2.0.0.RELEASE
aber Prahlerei Abhängigkeit verwenden
spring-plugin-core
mit Version1.2.0.RELEASE
.Spring-Boot hat einen Konflikt bei der Bean-Erstellung. Sie müssen also die
org.springframework.plugin
Version vereinheitlichen , damit Spring sie sieht. Wenn Sie möchten2.0.0.RELEASE
Swagger kann der Bot kompilieren.Die Version
1.2.0.RELEASE
funktioniert also für beide Abhängigkeiten, wie zDanach können Sie Konfigurationsklasse benötigen Bohnen zu initiieren
swagger
undhateoas
wie folgt aus :quelle
Also wollte ich eigentlich Hassoas Unterstützung und hatte das gleiche Problem. Es stellte sich heraus, dass dies passiert, wenn Sie haben
anstatt
quelle
Wenn Sie möchten
Swagger
, aber KompromisseHATEOAS
eingehen können , entfernen Sie einfach die HATEOAS-Abhängigkeit und fügen Sie Folgendes hinzu:quelle
Es wurde behoben, es geschah aufgrund der Integration, als Swagger + HATEOAS mit Spring Boot 2.2.4.RELEASE verwendet wurde
und unten sind die Prahlerabhängigkeiten
quelle
Ich habe diese Abhängigkeiten als Problemumgehung entfernt und gearbeitet:
Bitte lassen Sie mich wissen, ob für Sie gearbeitet hat.
quelle
Für
2.1.3.RELEASE
Benutzer der Spring-Boot-Version funktionieren die folgenden Abhängigkeiten für Hateoas + Swagger einwandfrei:quelle