如何使用Guice + Jersey + servlet将Swagger集成到Java项目中并自动生成REST API文档 [英] How to integrate Swagger into Java project using Guice + Jersey + servlet and generate REST API docs automatically

查看:59
本文介绍了如何使用Guice + Jersey + servlet将Swagger集成到Java项目中并自动生成REST API文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用Guice和Jersey提供REST服务的应用程序.如何在Guice中配置Swagger?我已经有以下依赖项:

I have an app which uses Guice and Jersey for REST services. How do I configure Swagger in Guice? I already have the following dependency:

compile group: 'io.swagger', name: 'swagger-jersey2-jaxrs', version: '1.5.0'

如何自动生成API文档?曾经遇到过类似问题的人,请对这种集成方法有所了解.非常感谢!

How do I generate the API docs automatically? Someone who has faced similar issues, please shed some light on this integration. Thanks a lot!

Guice like:

Guice like:

public class ServletContextListener extends GuiceServletContextListener {
 @Override
 protected Injector getInjector() {
    if(lifecycleInjector != null) return lifecycleInjector;
    this.lifecycleInjector = InjectorBuilder
            .fromModules(defineModules())
            .createInjector(Stage.DEVELOPMENT);
    return this.lifecycleInjector;
 }

 private List<Module> defineModules() {
    ArrayList<Module> modules = new ArrayList<>();
    modules.add(new ServletModule());
    return modules;
 }
}

JerseyServletModule类似于:

JerseyServletModule like:

public class ServletModule extends JerseyServletModule {
@Override
protected void configureServlets() {
    bind(GuiceContainer.class).to(GovernatorServletContainer.class).asEagerSingleton();
    serve("/api/*").with(GuiceContainer.class);
}
@Provides
ResourceConfig getResourceConfig() {
    final List<String> resources = new ArrayList<>();
    resources.add("com.fasterxml.jackson.jaxrs.json");
    final String[] arrayPackages = new String[resources.size()];
    resources.toArray(arrayPackages);
    return new RestApp(ImmutableMap.<String, Object>builder()
            .put(PROPERTY_PACKAGES, arrayPackages)
            .put(FEATURE_DISABLE_WADL, "true")
            .build()); 
}
@SwaggerDefinition(tags = {@Tag(name = "app API", description = "Administrative API for app")})
@ApplicationPath(RestApp.BASE_REST_APP_URI)
public class RestApp extends PackagesResourceConfig {
    public static final String BASE_REST_APP_URI = "/api";
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<>();
        classes.add(AppRestResource.class);
        return classes;
    }
}

如何添加Swagger?

How can I add the Swagger?

推荐答案

首先,感谢您已经解决了此问题.该示例为 guice-jersey-swagger示例

Thanks above all, I have fixed this problem. The sample is sample of guice-jersey-swagger

这篇关于如何使用Guice + Jersey + servlet将Swagger集成到Java项目中并自动生成REST API文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆