2016-07-22 66 views
0

我使用springboot作为球衣作为restful API。现在我想将swagger2集成到我的项目中,但它不起作用。当我运行我的应用程序并访问http://localhost:8080/swagger-ui.html。我收到了swagger的网页,但没有显示api(见下图)。看来,招摇并没有找到我的api类。如何在springboot中将springfox-swagger2与球衣进行整合

enter image description here

下面是我加的依赖关系。

compile "io.springfox:springfox-swagger2:2.5.0" 
compile 'io.springfox:springfox-swagger-ui:2.5.0' 

下面是我的应用程序类:

@SpringBootApplication 
@EnableSwagger2 
@EnableAutoConfiguration 
@Configuration 
@ComponentScan(value = "com.ticket.api") 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 


    @Bean 
    public Docket documentation() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .select() 
       .apis(RequestHandlerSelectors.basePackage("com.lenovo.ticket.api")) 
       .paths(PathSelectors.any()) 

       .build().pathMapping("/") 
       .useDefaultResponseMessages(false); 
    } 

    @Bean 
    UiConfiguration uiConfig() { 
     return UiConfiguration.DEFAULT; 
    } 

} 

下面是我的球衣配置类:

@Configuration 
@ApplicationPath("/ticket") 
public class JerseyConfig extends ResourceConfig { 

    public JerseyConfig(){ 
     register(Helloworld.class); 
    } 

} 

回答

0

不支持球衣,请参考this answer。鉴于答案来自SpringFox图书馆的作者,我会说这些信息是可靠的。

0

正如以前在本主题中回答的那样,如果端点是使用Spring MVC而不是Jersey实现的,则依赖关系将起作用,@EnableSwagger2注释和springfox将起作用。

为了证明你的泽西实现端点:

1) 确保您春季启动的应用程序会扫描位于特定的包()通过组件即com.asimio.jerseyexample.config:

@SpringBootApplication(
    scanBasePackages = { 
     "com.asimio.jerseyexample.config", "com.asimio.jerseyexample.rest" 
    } 
) 

2)泽西配置类实现:

package com.asimio.jerseyexample.config; 
... 
@Component 
public class JerseyConfig extends ResourceConfig { 

    @Value("${spring.jersey.application-path:/}") 
    private String apiPath; 

    public JerseyConfig() { 
     // Register endpoints, providers, ... 
     this.registerEndpoints(); 
    } 

    @PostConstruct 
    public void init() { 
     // Register components where DI is needed 
     this.configureSwagger(); 
    } 

    private void registerEndpoints() { 
     this.register(HelloResource.class); 
     // Access through /<Jersey's servlet path>/application.wadl 
     this.register(WadlResource.class); 
    } 

    private void configureSwagger() { 
     // Available at localhost:port/swagger.json 
     this.register(ApiListingResource.class); 
     this.register(SwaggerSerializers.class); 

     BeanConfig config = new BeanConfig(); 
     config.setConfigId("springboot-jersey-swagger-docker-example"); 
     config.setTitle("Spring Boot + Jersey + Swagger + Docker Example"); 
     config.setVersion("v1"); 
     config.setContact("Orlando L Otero"); 
     config.setSchemes(new String[] { "http", "https" }); 
     config.setBasePath(this.apiPath); 
     config.setResourcePackage("com.asimio.jerseyexample.rest.v1"); 
     config.setPrettyPrint(true); 
     config.setScan(true); 
    } 
} 

3)用JAX-RS(新泽西州)和扬鞭annotati Resource实现附件:

package com.asimio.jerseyexample.rest.v1; 
... 
@Component 
@Path("/") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
@Api(value = "Hello resource", produces = "application/json") 
public class HelloResource { 

    private static final Logger LOGGER = LoggerFactory.getLogger(HelloResource.class); 

    @GET 
    @Path("v1/hello/{name}") 
    @ApiOperation(value = "Gets a hello resource. Version 1 - (version in URL)", response = Hello.class) 
    @ApiResponses(value = { 
     @ApiResponse(code = 200, message = "Hello resource found"), 
     @ApiResponse(code = 404, message = "Hello resource not found") 
    }) 
    public Response getHelloVersionInUrl(@ApiParam @PathParam("name") String name) { 
     LOGGER.info("getHelloVersionInUrl() v1"); 
     return this.getHello(name, "Version 1 - passed in URL"); 
    } 
... 
} 

4)确保您的应用的春天启动配置文件,使执行器终端的Spring MVC(区别)和泽西岛(资源)的端点:

application.yml

... 
# Spring MVC dispatcher servlet path. Needs to be different than Jersey's to enable/disable Actuator endpoints access (/info, /health, ...) 
server.servlet-path:/
# Jersey dispatcher servlet 
spring.jersey.application-path: /api 
... 

这些步骤是在我创建了前段时间的博客文章更详细描述,Microservices using Spring Boot, Jersey Swagger and Docker

它引用我的Bitbucket回购中的源代码和一个运行示例