Spring boot 集成 swagger2

1.添加依赖

springboot 项目添加maven依赖,修改pom.xml


		<!-- swagger -->  
		<dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger2</artifactId>
		    <version>2.7.0</version>
		</dependency>
		<dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger-ui</artifactId>
		    <version>2.7.0</version>
		</dependency>

	    <!-- spring boot 基础依赖 -->  
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
 
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

2.添加swagger配置类 SwaggerConfig.java

  • 修改  package com.lij.springbootdemo.config;
  • 修改  com.lij.springbootdemo.controller
package com.lij.springbootdemo.config;

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.lij.springbootdemo.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("swagger 构建RESTful API")
                .description("")
                .termsOfServiceUrl("")
                //.contact(contact)
                .version("1.0")
                .build();
    }

}

3.编写接口

   实体类

package com.lij.springbootdemo.entity;

import java.io.Serializable;
import lombok.Data;

@Data
public class PersonInfo implements Serializable {

    private static final long serialVersionUID = 1L;

	private Integer id;
	private String name;
	private String gender;
	private String nationality;
	private String idcardNumber;
	private String birthDay;
	private String address;
}

controller

package com.lij.springbootdemo.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.lij.springbootdemo.entity.PersonInfo;
 
@RestController
@RequestMapping("/person")
@Api(tags = "人员接口",description="人员文档说明",hidden=true)
public class PersonController {
 
	
	@RequestMapping(value="selectAll",method=RequestMethod.POST)
	@ApiOperation(value="查询所有的人员",notes="查询所有的人员接口说明")
	@ApiImplicitParams({
		@ApiImplicitParam(name="id",value="",dataType="String", paramType = "query"),
		@ApiImplicitParam(name="pageSize",value="页码",dataType="String", paramType = "query"),
		@ApiImplicitParam(name="pageNum",value="每页条数",dataType="String", paramType = "query"),
	})
	@ApiResponse(response=PersonInfo.class, code = 200, message = "接口返回对象参数")
	public List<PersonInfo> selectAll(HttpServletRequest request) {
		List<PersonInfo> list = new ArrayList<PersonInfo>();
		return list;
	}
	
	@RequestMapping(value="findById",method=RequestMethod.GET)
	@ResponseBody
	public PersonInfo findById(Integer id) {

		return new PersonInfo();
	}
	
}

4.访问swagger页面

http://localhost:8080/swagger-ui.html

5.坑点

  • 千万不要尝试非 spring boot 集成 swaggerUI,坑点很多(莫名其妙报错很多,而且网上找不到答案,特别是开发中的springMVC项目集成swagger)
  • 可以尝试将原项目改成spring boot项目,在加入依赖(待尝试)
  • 访问swagger页面报错弹出框(Unable to infer base url.)解决方案---清除maven缓存,重新下载maven--update project

猜你喜欢

转载自blog.csdn.net/ladymorgana/article/details/88544825