【问题标题】:Multiple resource packages with Swagger 2使用 Swagger 2 的多个资源包
【发布时间】:2016-07-21 10:10:49
【问题描述】:

在配置 Swagger 2 时有什么方法可以指定多个包吗?

    BeanConfig beanConfig = new BeanConfig();
    beanConfig.setVersion("1.0.0");
    beanConfig.setResourcePackage("com.company1.resources ; org.company2.resources");
    beanConfig.setScan(true);

BeanConfig.setResourcePackage 只接受一个字符串。如果我用空格分隔它们,则只考虑第一个。如果我尝试使用semicolon,swagger 找不到任何东西。

我有一个带有 Jersey 2 的 Spring Boot 应用程序。

【问题讨论】:

    标签: java swagger jersey-2.0 swagger-2.0


    【解决方案1】:

    我在任何地方都没有看到这方面的文档,但根据当前 Swagger 核心 (1.5.10) 中的代码,看起来您用逗号 (',') 分隔多个包。这是来自BeanConfig.java的相关sn-p:

        if (resourcePackage != null && !"".equals(resourcePackage)) {
            String[] parts = resourcePackage.split(",");
            for (String pkg : parts) {
                if (!"".equals(pkg)) {
                    acceptablePackages.add(pkg);
                    config.addUrls(ClasspathHelper.forPackage(pkg));
                }
            }
        } else {
            allowAllPackages = true;
        }
    

    再往下看,allowAllPackages 标志会导致 Swagger 生成有关应用程序类路径中具有 JAX-RS 注释的所有类的文档。根据您拥有的依赖项,根本不设置资源包可能是一种选择。不过,使用逗号分隔的列表可能更安全。

    编辑:

    我确实在documentation 中发现了这一点:

    setResourcePackage(字符串)

    资源包

    设置 Swagger 应扫描哪些包以获取资源。如果有多个包,则可以是逗号分隔的包列表。

    【讨论】:

      【解决方案2】:

      如果所有 API 都在同一个项目中但在不同的包中,那么您可以像这样给出两者的基础包的名称。

      com.company1.resources1 org.company1.resources2 然后只给出一个这样的名称 - 然后它将列出所有控制器。

        @Bean
              public Docket api() {
                  return new Docket(DocumentationType.SWAGGER_2).select()
                      .apis(RequestHandlerSelectors
                          .basePackage("com.company1"))
                      .paths(PathSelectors.regex("/.*"))
                      .build().apiInfo(apiEndPointsInfo());
              }
      

      【讨论】:

      • 我认为您的意思是 com.company1 用于资源 1 和资源 2,对吧?
      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2011-02-07
      • 2011-09-18
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多