关于 java:为什么 HATEOAS 在使用 Swagger 2.x 启动期间开始为 spring-boot 版本> = 2.2.x 创建问题?

Why HATEOAS starts creating issue for spring-boot version >= 2.2.x during startup with Swagger 2.x?

我将我的项目从 spring-boot 2.1.9 移动到 2.2.0。

在启动项目时,我面临以下 error 消息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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.xml 文件中使用 HATEOAS。

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<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>
    0.8.1</assertj-swagger>
    <jacoco-version>0.8.4</jacoco-version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-configuration-processor</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-swagger2</artifactId>
        <version>${swagger-springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-swagger-ui</artifactId>
        <version>${swagger-springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-spring-web</artifactId>
        <version>${swagger-springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-core</artifactId>
        <version>${swagger-springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-data-rest</artifactId>
        <version>${swagger-springfox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-bean-validators</artifactId>
        <version>${swagger-springfox.version}</version>
    </dependency>

相关讨论

  • 使用 mvn dependency:tree 并检查是否有其他东西正在拉入 Hateoas 依赖项。 IRC 如果您使用依赖于 Spring Hateoas 的 Spring Data REST。
  • 我在升级时遇到了同样的问题。我确实知道依赖项来自何处,但我一直无法找到解决方案。
  • 您能否在这里指导我:stackoverflow.com/questions/60001241/...?

我的 spring-boot 应用程序中的 Swagger + HATEOAS 遇到了这个问题。

下面给出了修复(编辑你的 Swagger 配置类):

1
2
3
4
5
6
7
8
9
10
11
12
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Bean
    public LinkDiscoverers discoverers() {
        List<LinkDiscoverer> plugins = new ArrayList<>();
        plugins.add(new CollectionJsonLinkDiscoverer());
        return new LinkDiscoverers(SimplePluginRegistry.create(plugins));

    }
}

相关讨论

  • 这似乎对我不起作用,因为在响应中 _links 变成了 links 并且 _embedded 变成了 content ,因此我检查 _links 的大多数 mvcMock 测试都失败了,API与 spring-boot-starter-hateos 开箱即用的内容不同
  • 我也发生过这种情况。您需要启用 Hal json
  • 柠檬你能详细说明一下吗?我尝试使用 HalLinkDiscoverer 类而不是 CollectionJsonLinkDiscoverer 没有做到这一点,但我的测试仍然失败,因为链接呈现为 links 而不是 _links,并且内容是呈现为 content 而不是预期的 _embedded
  • 我在配置 java 文件中这样做的方式是 @EnableHypermediaSupport(type=EnableHypermediaSupport.Hyperm??ediaType.HAL),您必须包含 org.springframework.hateoas.config.EnableHypermediaSupport。不确定它是否重要,但我有一个依赖项:spring-boot-starter-hateoas
  • @lemon 不错的答案!这适用于 spring-boot 2.3.0 hatoas Swagger 2.9.2
  • 这个解决方案对我有用..但我很想知道这在逻辑上到底在做什么?有问题吗?它是如何修复的?
  • @lemon 这拯救了我的一天。谢谢。你能描述一下它到底是做什么的吗?
  • @Kerruba 你能解决这个问题吗?我也面临同样的问题。
  • @lemon 您的回复解决了我的问题,但在添加 EnableHypermediaSupport(type=EnableHypermediaSupport.Hyperme??diaType.HAL) 后,同样的问题又开始出现了。我尝试了这个,因为作为回应,我得到的是 links 而不是 _links
  • SimplePluginRegistry.create() 似乎已被弃用。有没有替代方案?

对我来说这个链接有帮助:https://github.com/spring-projects/spring-hateoas/issues/731

简而言之,我添加了我的依赖项:

1
2
3
4
5
<dependency>
    <groupId>org.springframework.plugin</groupId>
    spring-plugin-core</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

相关讨论

  • 谢谢!这对我有用。此外,在本教程中,还有对该依赖项的引用:baeldung.com/spring-hateoas-tutorial

此类问题是由于 Hateoas 的一项新功能而发生的。

如果你想解决这个问题,只需在你的swagger配置文件中嵌入下面这行代码即可。

1
2
3
4
5
6
7
@Primary
@Bean
public LinkDiscoverers discoverers() {
    List<LinkDiscoverer> plugins = new ArrayList<>();
    plugins.add(new CollectionJsonLinkDiscoverer());
    return new LinkDiscoverers(SimplePluginRegistry.create(plugins));
}

我认为这会解决你的问题,因为它解决了我的问题。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Use following 2 dependency to resolve Swagger and Hateoas dependency conflict.
   
    If Spring Boot version is >= 2.2.0 the use io.springfox version 3.0.0
   
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-swagger2</artifactId>
        <version>3.0.0</version>
    </dependency>
   
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>

使用 3.0.0 版本后,swagger-ui 将无法工作,因此请使用以下依赖项和用户 /swagger-ui/ 而不是 /swagger-ui.html

1
2
3
4
5
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

相关讨论

  • 为了解决我的问题,我首先要做@lemon 描述的事情,然后将 Springfox 依赖项升级到 3.0.0 并添加启动器。如果没有这个,我会多次出现可用的 bean,而 Spring Boot 无法选择。

我使用

时遇到的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
<dependency>
   <groupId>org.springframework.boot</groupId>
   spring-boot-dependencies</artifactId>
   <version>2.2.6.RELEASE</version>
   <type>pom</type>
   <scope>import</scope>
</dependency>
.....
.....
<dependency>
  <groupId>org.springframework.boot</groupId>
  spring-boot-starter-hateoas</artifactId>
</dependency>

用springfox招摇

1
2
3
4
5
6
7
8
9
10
<dependency>
  <groupId>io.springfox</groupId>
  springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>

如果您查看 spring hateoas 依赖项,则存在对 spring-plugin-core 版本 2.0.0.RELEASE

的依赖项

1
2
3
4
5
<dependency>
    <groupId>org.springframework.plugin</groupId>
    spring-plugin-core</artifactId>
    <version>${spring-plugin.version}</version>
</dependency>

但是大张旗鼓的依赖使用 spring-plugin-core 和版本 1.2.0.RELEASE.

spring-boot创建bean有冲突,需要统一org.springframework.plugin版本让spring看到,如果选择2.0.0.RELEASEswagger就可以编译,

所以版本 1.2.0.RELEASE 将适用于两个依赖项,例如

1
2
3
4
5
 <dependency>
    <groupId>org.springframework.plugin</groupId>
    spring-plugin-core</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>

之后,您需要配置类来为 Swagger 和 HATEOAS 启动 bean,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@EnableSwagger2
@Configuration
public class SwaggerConfiguration {

    @Primary
    @Bean
    public LinkDiscoverers discoverers() {
        List<LinkDiscoverer> plugins = new ArrayList<>();
        plugins.add(new CollectionJsonLinkDiscoverer());
        return new LinkDiscoverers(SimplePluginRegistry.create(plugins));
    }

    @Bean
    public Docket postsApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("{ApplicationName}")
                .apiInfo(buildApiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.regex("/.*"))
                .build();
    }

    private ApiInfo buildApiInfo() {
        Contact contact = new Contact("CompanyName","https://company-domain.com","mail@company.com");
        return new ApiInfoBuilder()
                .title(""{ApplicationName}"")
                .description("API Description")
                .license("license")
                .version("1.0")
                .contact(contact)
                .licenseUrl("licenseURl")
                .build();
    }
}

相关讨论

  • 谢谢!这个解决方案对我有用,我使用 @EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL) 来让 "_links" 带有下划线。我将 swagger 版本更新为 2.9.2。但是,我不需要 discovers() 方法,它仍然有效!

对于 Spring boot 版本 2.1.3.RELEASE 用户,以下依赖项适用于 hatoas swagger:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <dependency>
        <groupId>org.springframework.boot</groupId>
        spring-boot-starter-hateoas</artifactId>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>

试试这个2.6.1版本,我已经用这个方法解决了

1
2
3
4
5
6
7
8
9
10
<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger2</artifactId>
    <version>2.6.1</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger-ui</artifactId>
    <version>2.6.1</version>
</dependency>

相关讨论

  • 这对我来说也没有任何改变。

我正在使用 springdoc-openapi,在遇到类似于这里提到的问题后:

1
2
3
4
5
6
7
8
9
10
11
Description:

Parameter 0 of method linkDiscoverers in org.springframework.hateoas.config.HateoasConfiguration required a single bean, but 3 were found:
    - 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]

Action:

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

我只是在我的 pom 文件中添加了这个依赖

1
2
3
4
5
<dependency>
    <groupId>org.springframework.hateoas</groupId>
    spring-hateoas</artifactId>
    <version>1.1.1.RELEASE</version>
</dependency>

希望这可以帮助某人


最佳解决方案

在 SwaggerConfig 类中添加以下代码

1
2
3
4
5
6
@Bean
public LinkDiscoverers discovers() {    
    List<LinkDiscoverer> plugins = new ArrayList<>();
    plugins.add(new CollectionJsonLinkDiscoverer());
    return new LinkDiscoverers(SimplePluginRegistry.create(plugins));[enter image description here][1]  
}

作为亚历山大·魏?已经回答,spring-plugin-core 依赖解决了错误的版本 1.2.0.RELEASE.

为了强制使用正确的2.0.0.RELEASE,你必须要么排除错误的传递依赖并明确指定正确的,要么在pom.xml中固定(!)那个依赖版本。这是在 <dependenciesManagement> 块中完成的,而不是在 <dependencies> 块中。 Springfox 3.0.0 的固定示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<properties>
    <spring-plugin-core.version>2.0.0.RELEASE</spring-plugin-core.version>
    <springfox.version>3.0.0</springfox.version>
</properties>

<dependencyManagement>
  <dependencies>
    <!-- API Documentation -->
    <!-- Fix wrong resolved `spring-plugin-core` dependency version for springfox -->
    <dependency>
      <groupId>org.springframework.plugin</groupId>
      spring-plugin-core</artifactId>
      <version>${spring-plugin-core.version}</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      springfox-boot-starter</artifactId>
      <version>${springfox.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <!-- API Documentation -->
  <dependency>
    <groupId>io.springfox</groupId>
    springfox-boot-starter</artifactId>
  </dependency>
</dependencies>


我收到错误

"在类路径资源 [org/springframework/hateoas/mediatype/hal/HalMediaTypeConfiguration.class] 中定义名称为 'halLinkDisocoverer' 的 bean 创建错误"..

在构建超媒体驱动的 RESTful Web 服务时

删除这个依赖

1
2
3
4
5
<dependency>
     <groupId>com.jayway.jsonpath</groupId>
     json-path</artifactId>
     <scope>test</scope>
</dependency>

解决了我的问题。

查看此链接了解更多详情
为什么我收到错误工厂方法"halLinkDisocoverer"在 springboot 中引发异常?


您可以像这样更改版本:

1
2
3
4
5
6
7
8
9
10
<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>

我正在使用 Spring Boot 2.4.1。但是在启动 Spring Boot 应用程序时看不到 Swagger 端点日志。


所以我实际上想要 hatoas 支持并且遇到了同样的问题。如果你有

就会发生这种情况

1
2
3
4
<dependency>
  <groupId>org.springframework.hateoas</groupId>
  spring-hateoas</artifactId>
</dependency>

而不是

1
2
3
4
<dependency>
  <groupId>org.springframework.boot</groupId>
  spring-boot-starter-hateoas</artifactId>
</dependency>

相关讨论

  • 还想指出当前与 hatoas swagger spring boot 2.2.0 不兼容。您可以运行 hatoas 或 swagger,但不能同时运行。 github.com/springfox/springfox/issues/2932
  • 我没有使用hateoas,也不需要它。我什至尝试从 spring web starter 中排除 hatoas 依赖。

已解决,当 Swagger HATEOAS 与 Spring Boot 2.2.4.RELEASE 一起使用时,由于集成而发生此问题。RELEASE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.company.springbootworks.swagger;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.hateoas.client.LinkDiscoverer;
import org.springframework.hateoas.client.LinkDiscoverers;
import org.springframework.hateoas.mediatype.collectionjson.CollectionJsonLinkDiscoverer;
import org.springframework.http.ResponseEntity;
import org.springframework.plugin.core.SimplePluginRegistry;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.DocExpansion;
import springfox.documentation.swagger.web.ModelRendering;
import springfox.documentation.swagger.web.OperationsSorter;
import springfox.documentation.swagger.web.TagsSorter;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger.web.UiConfigurationBuilder;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public LinkDiscoverers discoverers() {
        List<LinkDiscoverer> plugins = new ArrayList<>();
        plugins.add(new CollectionJsonLinkDiscoverer());
        return new LinkDiscoverers(SimplePluginRegistry.create(plugins));

    }

    @Bean
    public Docket eDesignApi(SwaggerConfigProperties swaggerConfigProperties) {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo(swaggerConfigProperties))
                .enable(Boolean.valueOf(swaggerConfigProperties.getEnabled())).select()
                .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().pathMapping("/")
                .directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
                .useDefaultResponseMessages(Boolean.valueOf(swaggerConfigProperties.getUseDefaultResponseMessages()))
                .enableUrlTemplating(Boolean.valueOf(swaggerConfigProperties.getEnableUrlTemplating()));
    }

    @Bean
    UiConfiguration uiConfig(SwaggerConfigProperties swaggerConfigProperties) {
        return UiConfigurationBuilder.builder().deepLinking(Boolean.valueOf(swaggerConfigProperties.getDeepLinking()))
                .displayOperationId(Boolean.valueOf(swaggerConfigProperties.getDisplayOperationId()))
                .defaultModelsExpandDepth(Integer.valueOf(swaggerConfigProperties.getDefaultModelsExpandDepth()))
                .defaultModelExpandDepth(Integer.valueOf(swaggerConfigProperties.getDefaultModelExpandDepth()))
                .defaultModelRendering(ModelRendering.EXAMPLE)
                .displayRequestDuration(Boolean.valueOf(swaggerConfigProperties.getDisplayRequestDuration()))
                .docExpansion(DocExpansion.NONE).filter(Boolean.valueOf(swaggerConfigProperties.getFilter()))
                .maxDisplayedTags(Integer.valueOf(swaggerConfigProperties.getMaxDisplayedTags()))
                .operationsSorter(OperationsSorter.ALPHA)
                .showExtensions(Boolean.valueOf(swaggerConfigProperties.getShowExtensions()))
                .tagsSorter(TagsSorter.ALPHA).supportedSubmitMethods(UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS)
                .validatorUrl(null).build();
    }

    private ApiInfo apiInfo(SwaggerConfigProperties swaggerConfigProperties) {
        return new ApiInfoBuilder().title(swaggerConfigProperties.getTitle())
                .description(swaggerConfigProperties.getDescription()).version(swaggerConfigProperties.getApiVersion())
                .build();
    }
}

及以下是swagger依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<properties>
    <java.version>1.8</java.version>
    <swagger.version>2.9.2</swagger.version>
    <swagger-annotations.version>1.5.21</swagger-annotations.version>
    <swagger-models.version>1.5.21</swagger-models.version>
    <spring-plugin.version>2.0.0.BUILD-SNAPSHOT</spring-plugin.version>
</properties>

<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger2</artifactId>
    <version>${swagger.version}</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger-ui</artifactId>
    <version>${swagger.version}</version>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    swagger-annotations</artifactId>
    <version>${swagger-annotations.version}</version>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    swagger-models</artifactId>
    <version>${swagger-models.version}</version>
</dependency>

相关讨论

  • 您从哪里获得 SwaggerConfigProperties ?

我已经删除了这些依赖项作为解决方法并工作了:

1
2
3
4
5
6
7
8
9
10
11
<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger2</artifactId>
    <version>2.4.0</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    springfox-swagger-ui</artifactId>
    <version>2.4.0</version>
</dependency>

如果对你有用,请告诉我。


如果你想要 Swagger,但可以与 HATEOAS 妥协,那么只需删除 HATEOAS 依赖项并添加:

1
2
compile group: 'io.springfox', name: 'springfox-swagger-ui', version:'2.9.2'  
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'

以上是关于 java:为什么 HATEOAS 在使用 Swagger 2.x 启动期间开始为 spring-boot 版本> = 2.2.x 创建问题?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>