Swagger和自动资源发现

时间:2016-06-23 12:22:10

标签: java jax-rs swagger jersey-2.0

根据本教程,我使用Swagger for Jersey2:https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5使用自定义Application类。为了使Swagger正确初始化,需要实现getClasses()的覆盖。

不幸的是,这也意味着我必须手动将每个类从我的资源添加到HashSet。如果我不这样做,所有端点都会返回404.但是当我不使用Swagger时,我不必覆盖该方法,并且所有REST资源都会被JAX-RS注释自动发现。

有没有办法注册Swagger类,但同时保留我个人资源的自动发现?

1 个答案:

答案 0 :(得分:2)

使用ResourceConfig扩展ApplicationResourceConfigpackages方法通过包扫描注册所有类,您可以在register上注册调用ResourceConfig的Swagger组件。你可以在构造函数中完成所有这些。

@ApplicationPath("/api")
public class AppConfig extends ResourceConfig {
    public AppConfig() {
        packages("the.packages.to.scan");
        register(SwaggerComponent.class);
    }
}

另见:

  • Swagger overrides Path-Annotations获取其他选项。它使用标准的JAX-RS API。但另请参阅有关类路径扫描的链接以及不应使用它的原因。包装扫描更好,更快。