首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Spring Boot SwaggerUI

Java Spring Boot SwaggerUI
EN

Stack Overflow用户
提问于 2019-12-06 01:33:08
回答 2查看 71关注 0票数 1

我在java spring boot上大摇大摆地工作有一些问题。应用程序被编译,swagger ui启动,但它是空的。

这是我的swagger配置:

代码语言:javascript
复制
package configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class SwaggerConfiguration {
    @Bean
    public Docket productApi()
    {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .apiInfo(metaInfo());
    }

    private ApiInfo metaInfo() {

        return new ApiInfoBuilder().title("Swagger for Demo app")
                                   .description("Demo application using swagger")
                                   .contact
                                   (
                                       new Contact
                                       (
                                           "Vastag Atila",
                                           "",
                                           "wasyster@gmail.com"
                                       )
                                   )
                                   .license("MIT")
                                   .version("1.0.0")
                                   .build();
    }
}

下面是我的控制器示例:

代码语言:javascript
复制
package controllers;

import common.ServiceObjectResponse;
import entity.Diak;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import request.RequestDiakByName;
import services.IDiakService;

import javax.validation.Valid;
import java.util.List;

@RestController
@Api
public class DiakController
{
    @Autowired
    IDiakService _diakService;

    @ApiOperation("getByname")
    @PostMapping("/api/diak/byname")
    @ResponseBody
    public Diak GetDiakByName(@RequestBody @Valid RequestDiakByName data) throws Exception
    {
        ServiceObjectResponse<Diak> request = _diakService.getByName(data.Name);

        if(!request.getIsSuccess())
        {
            throw new Exception(request.getMessage());
        }
        return request.getObject();
    } 
}

和主要的应用程序:

代码语言:javascript
复制
package app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;


@SpringBootApplication
@ComponentScan({"controllers", "service", "repository"})
public class WebApiApplication
{
    public static void main(String[] args)
    {
        SpringApplication.run(WebApiApplication.class, args);
    }
}

导入的依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
    <scope>compile</scope>
</dependency>

我的项目是一个multy maven项目,如果它有价值的话。我遵循了很多教程,但仍然不能让它工作。

thnx

EN

回答 2

Stack Overflow用户

发布于 2019-12-06 02:11:42

变化

代码语言:javascript
复制
@ComponentScan({"controllers", "service", "repository"})

代码语言:javascript
复制
@ComponentScan({"controllers", "service", "repository", "configuration"})
票数 1
EN

Stack Overflow用户

发布于 2019-12-06 02:13:38

我已经为swagger配置修改了你的代码。你可以试试。

代码语言:javascript
复制
package configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class SwaggerConfiguration {
    @Bean
  public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.basePackage("<your base package>"))
        .paths(PathSelectors.any())
        .build()
        .apiInfo(apiInfo());
  }

  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("Swagger for Demo app")
        .description("Demo application using swagger")
        .termsOfServiceUrl("http://springfox.io")
        .contact(
            new Contact(
                "DellEmc", "http://www.example.com/index.htm", "<some@emailid.com>"))
        .license("MIT"")
        .licenseUrl(
            "http://www.licenseurl.com/")
        .version("0.0.1")
        .build();
  }

}

我还修改了控制器类,如下所示。

代码语言:javascript
复制
@RestController
@Api(
    value = "IDiakService",
    description = "API for IDiakService",
    tags = {"IDiakService"})
public class DiakController
{
    @Autowired
    IDiakService _diakService;

    @ApiOperation(
      value = "Get Diak By Name",
      tags = {"IDiakService"})
    @PostMapping("/api/diak/byname")
    @ResponseBody
    public Diak GetDiakByName(@RequestBody @Valid RequestDiakByName data) throws Exception
    {
        ServiceObjectResponse<Diak> request = _diakService.getByName(data.Name);

        if(!request.getIsSuccess())
        {
            throw new Exception(request.getMessage());
        }
        return request.getObject();
    } 
} }

最后,您必须像这样提供组件扫描。

代码语言:javascript
复制
@ComponentScan(basePackages = { "com.app.module.*" }) // you have to specify the package name.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59200459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档