在JAXRS中为Swagger设置scan.all.resources

时间:2018-02-03 22:37:44

标签: annotations swagger

我在提供的带有Swagger 1.5.18的Application Server中使用普通的JAXRS。我可以让Swagger带注释的类出现在swagger.json中,但是我无法设置Swagger来扫描非带注释的类,那些只带有@Path JAXRS注释的类。

我目前在类BeanConfig中扩展Application。我尝试使用Servlet扩展DefaultJaxrsConfig @WebInitParam(name="scan.all.resources", value="true"),但这根本不起作用。

documentation表示设置ReaderConfig.scanAllResources可以达到我想要的效果。但是,我不确定实现这个的好方法。有什么建议吗?

当前配置类:

@ApplicationPath("services") 
public class Configuration extends Application {

public Configuration() {
    BeanConfig beanConfig = new BeanConfig();
    beanConfig.setVersion("1.0.0");
    beanConfig.setTitle("SwaggerExample");
    beanConfig.setBasePath("/SwaggerExample/services");
    beanConfig.setResourcePackage("com.xxxxxx.swagger.jaxrs");
    beanConfig.setScan(true);
    beanConfig.setPrettyPrint(true);
} 

谢谢,Brian

1 个答案:

答案 0 :(得分:0)

通过实现ReaderListener,我确实找到了解决Swagger blog post中发布的问题的方法。但是,我认为这可以在BeanConfig级别设置。这是我的解决方案:

@SwaggerDefinition
public class ApiDefinitions implements ReaderListener {

    @Override
    public void afterScan(Reader reader, Swagger swagger) {
    }

    @Override
    public void beforeScan(Reader reader, Swagger swagger) {
        ((DefaultReaderConfig) reader.getConfig()).setScanAllResources(true); 
    }
}

布赖恩