Spring Boot集成Swagger
集成Swagger有两种:@EnableSwagger2 与 @EnableSwagger2Doc
一、 @EnableSwagger2
-
添加依赖pom.xml:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</version> </dependency> <!-- swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.5.0</version> </dependency>
-
Application添加注解@EnableSwagger2,同时要注意添加@SpringBootApplication的包扫描路径
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication(scanBasePackages = "com.example") @EnableSwagger2 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
-
编写Controller,为接口增加@Api 与 @ApiOperation 注解
package com.example.demo.api.controller; import com.example.demo.domain.entity.Demo; import com.example.demo.infra.mapper.DemoMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping({"/demo"}) @Api(tags = {"模板接口"}) public class DemoController { private final DemoMapper demoMapper; @Autowired public DemoController(DemoMapper demoMapper) { this.demoMapper = demoMapper; } @GetMapping @ApiOperation(value = "批量查询接口", notes = "批量查询Demo") public ResponseEntity<List<Demo>> query(Demo demo) { List<Demo> demoList = new ArrayList<>(); demoList.add(demo); return new ResponseEntity<>(demoList, HttpStatus.OK); } @PostMapping @ApiOperation(value = "新增接口", notes = "新增Demo") public ResponseEntity<Demo> insert(@RequestBody Demo demo) { demoMapper.insertDemo(demo); return new ResponseEntity<>(demo, HttpStatus.OK); } }
-
完成以上配置之后,启动项目,打开http://localhost:8080/swagger-ui.html
二、@EnableSwagger2Doc
-
添加依赖pom.xml:
<dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-spring-boot-starter</artifactId> <version>1.8.0.RELEASE</version> </dependency>
-
Application添加注解@EnableSwagger2Doc,同时要注意添加@SpringBootApplication的包扫描路径
package com.example.demo; import com.spring4all.swagger.EnableSwagger2Doc; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(scanBasePackages = "com.example") @EnableSwagger2Doc public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
-
在application.yml添加配置(可选):
swagger: title: DEMO API description: this is my swagger version: 1.1 base-package: com.example
-
编写Controller,为接口增加@Api 与 @ApiOperation 注解
package com.example.demo.api.controller; import com.example.demo.domain.entity.Demo; import com.example.demo.infra.mapper.DemoMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping({"/demo"}) @Api(tags = {"模板接口"}) public class DemoController { private final DemoMapper demoMapper; @Autowired public DemoController(DemoMapper demoMapper) { this.demoMapper = demoMapper; } @GetMapping @ApiOperation(value = "批量查询接口", notes = "批量查询Demo") public ResponseEntity<List<Demo>> query(Demo demo) { List<Demo> demoList = new ArrayList<>(); demoList.add(demo); return new ResponseEntity<>(demoList, HttpStatus.OK); } @PostMapping @ApiOperation(value = "新增接口", notes = "新增Demo") public ResponseEntity<Demo> insert(@RequestBody Demo demo) { demoMapper.insertDemo(demo); return new ResponseEntity<>(demo, HttpStatus.OK); } }
-
完成以上配置之后,启动项目,打开http://localhost:8080/swagger-ui.html