在配置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应用程序。
答案 0 :(得分:5)
我没有在任何地方看到过这种情况,但根据当前Swagger核心(1.5.10)中的代码,您看起来像是用逗号(',')分隔多个包。以下是one
的相关摘要:
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;
}
标志使Swagger生成有应用程序类路径中具有JAX-RS注释的所有类的文档。根据您的依赖关系,根本不设置资源包可能是一个选项。但是,使用以逗号分隔的列表可能更安全。
编辑:
我确实在documentation中找到了这一点:
setResourcePackage(字符串)
resourcePackage
设置Swagger应扫描哪些包以获取资源。如果有多个包,则可以是以逗号分隔的包列表。
答案 1 :(得分:0)
如果所有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());
}