使用Swagger 2的多个资源包

gar*_*560 5 java swagger jersey-2.0 swagger-2.0

配置Swagger 2时有没有办法指定多个包?

    BeanConfig beanConfig = new BeanConfig();
    beanConfig.setVersion("1.0.0");
    beanConfig.setResourcePackage("com.company1.resources ; org.company2.resources");
    beanConfig.setScan(true);
Run Code Online (Sandbox Code Playgroud)

BeanConfig.setResourcePackage只接受一个字符串.如果我用空格分隔它们,只考虑第一个空格.如果我尝试使用分号,那么招摇没有找到任何分号.

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

von*_*tke 5

我没有在任何地方看到过这种情况,但根据当前Swagger核心(1.5.10)中的代码,您看起来像是用逗号(',')分隔多个包.以下是相关摘录BeanConfig.java:

    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;
    }
Run Code Online (Sandbox Code Playgroud)

进一步向下看,该allowAllPackages标志使Swagger生成有应用程序类路径中具有JAX-RS注释的所有类的文档.根据您的依赖关系,根本不设置资源包可能是一个选项.但是,使用逗号分隔列表可能更安全.

编辑:

我确实在文档中提到了这一点:

setResourcePackage(字符串)

resourcePackage

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