Swagger 覆盖 Path-Annotations
Swagger overrides Path-Annotations
我只是大摇大摆地生成了一个有效的 swagger.json。
我使用 Application-config 方法配置了 swagger。
但是,一旦我重写 getClasses-Method 以添加 swagger 资源,我的 JAX-RS 路径注释 类 就会停止工作。
该方法看起来像这样
@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() returns 是空集。
我的项目中有太多资源,我不想手动添加。
swagger 有什么方法不会影响我之前的配置吗?
谢谢!
您可以使用 javax.ws.rs.core.Feature
。只需通过回调的 FeatureContext
注册 classes。使用 @Provider
注释特征将通过扫描注册它。
@Provider
public class SwaggerFeature implements Feature {
@Override
public boolean configure(FeatureContext context) {
context.register(ApiListingResource.class);
context.register(SwaggerSerializers.class);
return true;
}
}
但请注意,如果应用程序已经通过 class 路径扫描注册资源和提供者,我想它也应该选择 Swagger classes,因为它们用 @Path
[1] 和 @Provider
[2 ]。这些是 class-path 扫描查找的注释。
我自己没试过(我停止使用class-路径扫描[3]),但是您是否尝试过根本不注册它们?理论上,class-路径扫描应该能找到它。
1. io.swagger.jaxrs.listing.ApiListingResource
2. io.swagger.jaxrs.listing.SwaggerSerializers
3. When to Use JAX-RS Class-path Scanning Mechanism
我只是大摇大摆地生成了一个有效的 swagger.json。 我使用 Application-config 方法配置了 swagger。 但是,一旦我重写 getClasses-Method 以添加 swagger 资源,我的 JAX-RS 路径注释 类 就会停止工作。 该方法看起来像这样
@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() returns 是空集。 我的项目中有太多资源,我不想手动添加。
swagger 有什么方法不会影响我之前的配置吗?
谢谢!
您可以使用 javax.ws.rs.core.Feature
。只需通过回调的 FeatureContext
注册 classes。使用 @Provider
注释特征将通过扫描注册它。
@Provider
public class SwaggerFeature implements Feature {
@Override
public boolean configure(FeatureContext context) {
context.register(ApiListingResource.class);
context.register(SwaggerSerializers.class);
return true;
}
}
但请注意,如果应用程序已经通过 class 路径扫描注册资源和提供者,我想它也应该选择 Swagger classes,因为它们用 @Path
[1] 和 @Provider
[2 ]。这些是 class-path 扫描查找的注释。
我自己没试过(我停止使用class-路径扫描[3]),但是您是否尝试过根本不注册它们?理论上,class-路径扫描应该能找到它。
1. io.swagger.jaxrs.listing.ApiListingResource
2. io.swagger.jaxrs.listing.SwaggerSerializers
3. When to Use JAX-RS Class-path Scanning Mechanism