我只是摇摇晃晃地产生了一个有效的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()返回空集。 我的项目中有太多资源,我不想手动添加。
有没有什么方法可以不招惹我以前的配置?
谢谢!
答案 0 :(得分: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. When to Use JAX-RS Class-path Scanning Mechanism
子>