Swagger 和自动资源发现

Swagger and automatic resource discovery

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

不幸的是,这也意味着我必须手动将资源中的每个 class 添加到 HashSet。如果我不这样做,所有端点 return 404。但是当我不使用 Swagger 时,我不必重写该方法,并且我的所有 REST 资源都由 JAX-RS 注释自动发现。

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

使用扩展 ApplicationResourceConfigResourceConfig有一个packages方法通过包扫描注册所有类,你可以在ResourceConfig上注册调用register的Swagger组件。您可以在构造函数中执行所有这些操作。

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

另请参阅:

  • 另一种选择。它使用标准的 JAX-RS API。但另请参阅 link 关于类路径扫描以及为什么不应该使用它。包扫描它更好,更快。