Saya memindahkan proyek saya dari spring boot 2.1.9 ke 2.2.0. Saat memulai proyek saya menghadapi error
pesan-pesan di bawah ini .
Apa yang bisa menyebabkan, saya tidak menggunakan file hateoas
saya pom.xml
juga.
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
sumber
sumber
mvn dependency:tree
dan periksa apakah ada sesuatu yang menarik dalamHateoas
ketergantungan. IRC Jika Anda menggunakan Spring Data REST yang memiliki ketergantungan pada Spring Hateoas.Jawaban:
Saya mengalami masalah ini
Swagger + HATEOAS
dalamspring-boot
aplikasi saya .Perbaikan diberikan di bawah ini (edit kelas konfigurasi Swagger Anda):
sumber
_links
yang diubah menjadilinks
dan_embedded
diubah menjadicontent
dalam respons, oleh karena itu sebagian besar tes mvcMock saya memeriksa_links
gagal dan API berbeda dari apa yang disediakan di luar kotak dengan spring-boot-starter- hateosHalLinkDiscoverer
kelas alih-alihCollectionJsonLinkDiscoverer
tidak melakukan trik dan tes saya tetap gagal karena tautan di-renderlinks
dan tidak_links
, serta konten di-rendercontent
dan tidak diharapkan_embedded
@EnableHypermediaSupport(type=EnableHypermediaSupport.HypermediaType.HAL)
Anda harus memasukkanorg.springframework.hateoas.config.EnableHypermediaSupport
. Tidak yakin apakah itu penting, tetapi saya memiliki ketergantungan: spring-boot-starter-hateoasSolusi terbaik
Tambahkan kode di bawah ini di kelas SwaggerConfig
sumber
Bagi saya tautan ini membantu: https://github.com/spring-projects/spring-hateoas/issues/731
Singkatnya saya menambahkan ke dependensi saya:
sumber
coba versi 2.6.1 ini, saya sudah menyelesaikannya dengan cara ini
sumber
Masalah yang saya hadapi ketika saya menggunakan
dengan kesombongan springfox
jika Anda melihat ke dependensi musim semi hateoas ada ketergantungan
spring-plugin-core
dengan versi2.0.0.RELEASE
tapi swagger dependensi digunakan
spring-plugin-core
dengan versi1.2.0.RELEASE
.pegas-boot memiliki konflik pada pembuatan kacang jadi, Anda perlu menyatukan
org.springframework.plugin
versi untuk membuat pegas melihatnya, Jika Anda memilih2.0.0.RELEASE
kesombongan bot tidak dapat dikompilasi,jadi versi
1.2.0.RELEASE
akan berfungsi untuk kedua dependensi, sepertiSetelah itu Anda memerlukan kelas konfigurasi untuk menginisiasi bean untuk
swagger
danhateoas
seperti ini:sumber
Jadi saya benar-benar menginginkan dukungan dari para pembenci dan memiliki masalah yang sama. Ternyata ini terjadi jika sudah
dari pada
sumber
Jika Anda mau
Swagger
, tetapi dapat berkompromi denganHATEOAS
, maka cukup hapus dependensi HATEOAS dan tambahkan:sumber
Mengatasinya, itu terjadi karena integrasi ketika Swagger + HATEOAS digunakan dengan Spring Boot 2.2.4.RELEASE
dan di bawah ini adalah dependensi angkuh
sumber
Saya telah menghapus dependensi ini sebagai solusi dan bekerja:
tolong beri tahu saya jika berhasil untuk Anda.
sumber
Untuk
2.1.3.RELEASE
pengguna versi boot Spring , dependensi berikut berfungsi dengan baik untuk hateoas + swagger:sumber
Masalah semacam ini terjadi karena fitur baru dari Hateoas.
Jika Anda ingin menyelesaikan masalah ini, cukup masukkan baris kode berikut dalam file konfigurasi kesombongan Anda.
Saya pikir ini akan menyelesaikan masalah Anda karena itu menyelesaikan masalah saya.
sumber