springboot不支持具有相同组名的多个Docket

时间:2019-02-27 10:39:02

标签: spring-boot swagger springfox

我有下面的弹簧启动配置,当服务启动时出现以下错误,我不确定为什么会这样。我遵循了一个教程,它对他们有用。

java.lang.IllegalStateException: Multiple Dockets with the same group name are not supported. The following duplicate groups were discovered. default


@Configuration
@EnableSwagger2
@Import(BeanValidatorPluginsConfiguration.class)
public class SpringFoxConfig {

  @Bean
  public Docket apiDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
      .select()
      .apis(RequestHandlerSelectors.basePackage("test.rest"))
      .paths(PathSelectors.ant("/test/**"))
      .build()
      .apiInfo(apiInfo());
  }

  // Describe the apis
  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
      .title("test")
      .description("Test")
      .version("1.0.0")
      .license("vvv")
      .build();
  }

}

我也有另一个配置

@OurApp
@EnableSwagger2
public class CoreApp extends OurApp {

}

2 个答案:

答案 0 :(得分:4)

在这里,您尝试使用相同的组名来执行多个Dockets,这是不可接受的。请查看提供的链接。

  

groupName(java.lang.String groupName)如果多个实例   收件箱存在,每个收件箱必须具有由   这种方法。 Documentation

public class Docket implements DocumentationPlugin {
    public static final String DEFAULT_GROUP_NAME = "default"; }

您可以看到上面的DocumentPlugin具有默认的组名。

public Docket(DocumentationType documentationType) {
    this.apiInfo = ApiInfo.DEFAULT;
    this.groupName = "default"; 

以上默认为组名。

因此,您需要为两个资料夹使用两个不同的组名。

您需要做的就是如下更改代码。只需覆盖现有的默认组名即可。

@Configuration
@EnableSwagger2
@Import(BeanValidatorPluginsConfiguration.class)
public class SpringFoxConfig {
    @Bean
      public Docket apiDocket() {
        String groupName = "Swagger";
        return new Docket(DocumentationType.SWAGGER_2)
          .select()
          .apis(RequestHandlerSelectors.basePackage("test.rest"))
          .paths(PathSelectors.ant("/test/**"))
          .build()
          .groupName(groupName)
          .apiInfo(apiInfo());
      }

      // Describe the apis
      private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
          .title("test")
          .description("Test")
          .version("1.0.0")
          .license("vvv")
          .build();
      }

    }

答案 1 :(得分:0)

好像您给的组名相同,但不被接受,请检查并正确设置组名。