首页 文章

Swagger覆盖Path-Annotations

提问于
浏览
0

我只是摇摇晃晃地产生了一个有效的swagger.json . 我使用Application-config方法配置了swagger . 但是,只要我覆盖了getClasses-Method以添加swagger资源,我的JAX-RS Path-annotated类就会停止工作 . 该方法看起来像这样

@Override
public Set<Class<?>> getClasses() {
    Set<Class<?>> resources = new HashSet<>();

    resources.add(io.swagger.jaxrs.listing.ApiListingResource.class);
    resources.add(io.swagger.jaxrs.listing.SwaggerSerializers.class);

    return resources;
}

并调用super.getClasses()返回空集 . 我的项目中有太多资源,我不想手动添加 .

有没有什么方法招摇不会弄乱我以前的配置?

谢谢!

1 回答

  • 1

    你可以使用javax.ws.rs.core.Feature . 只需通过回调的 FeatureContext 注册类 . 使用 @Provider 注释该功能将通过扫描注册 .

    @Provider
    public class SwaggerFeature implements Feature {
    
        @Override
        public boolean configure(FeatureContext context) {
            context.register(ApiListingResource.class);
            context.register(SwaggerSerializers.class);
            return true;
        }
    }
    

    但请注意,如果应用程序已经通过类路径扫描注册资源和提供程序,我想它也应该选择Swagger类,因为它们用 @Path [1]和 @Provider [2]注释 . 这些是类路径扫描所寻找的注释 .

    我自己没有尝试过(我停止使用类路径扫描[3]),但您是否尝试过根本不注册它们?理论上,类路径扫描应该提取它 .

    1. io.swagger.jaxrs.listing.ApiListingResource 2. io.swagger.jaxrs.listing.SwaggerSerializers 3.何时使用JAX-RS类路径扫描机制

相关问题