我正在尝试在具有两个Application类的Java应用程序上实现Swagger,因为一个处理"public" Web服务而另一个处理"admin" Web服务 . 我正在尝试生成两个单独的swagger.json文件,每个文件对应一个Application类 . 但是,两个URL中只生成其中一个 . 这是一些代码:
公共应用类:
@WebServlet
@ApplicationPath("/public")
public class PublicApplication extends Application {
public PublicApplication() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0");
beanConfig.setTitle("A Fine Title");
beanConfig.setDescription("A Fine Description.");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setBasePath("/api");
beanConfig.setResourcePackage("com.test.rest.resource.external");
beanConfig.setPrettyPrint(true);
beanConfig.setScan(true);
}
}
私人申请类:
@WebServlet
@ApplicationPath("/admin")
public class AdminApplication extends Application {
public AdminApplication() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0");
beanConfig.setTitle("Another Fine Title");
beanConfig.setDescription("Another Fine Description.");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setBasePath("/apiTwo");
beanConfig.setResourcePackage("com.test.rest.resource.internal");
beanConfig.setPrettyPrint(true);
beanConfig.setScan(true);
}
}
现在,如果我点击这些网址中的任何一个,我会得到相同的“公共”swagger json文件:
我究竟做错了什么?
感谢所有阅读的人!
1 回答
默认情况下,Swagger会对扫描仪和配置进行一次初始化 . 如果您有多个应用程序或配置,则需要通过
BeanConfig
为每个应用程序设置configId,scannerInd和contextId,这应该与servlet配置中的值匹配 . 这个设置只适用于最新版本的swagger我认为 . 我试着用swagger-1.5.13 . 一个例子如下所示 .您的AdminApplication类
您还应该将servlet config中的configId,contextId和scannerIdd指定为init参数,如下所示 .