首页 文章

Swagger和自动资源发现

提问于
浏览
2

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

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

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

1 回答

  • 2

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

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

    See Also:

    • Swagger overrides Path-Annotations换另一种选择 . 它使用标准的JAX-RS API . 但另请参阅有关类路径扫描的链接以及不应使用它的原因 . 包扫描更好,更快 .

相关问题