失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SpringBoot 整合 Swagger

SpringBoot 整合 Swagger

时间:2023-09-30 18:14:15

相关推荐

SpringBoot 整合 Swagger

SpringBoot整合Swagger

一、maven依赖二、SwaggerConfig.java三、两种高版本启动报错Failed to start bean 'documentationPluginsBootstrapper'解决办法1、配置WebMvcConfigurer.java2、配置文件添加spring.mvc.pathmatch.matching-strategy=ant_path_matcher四、TestSwaggerController.java五、TestSwaggerTest2Req.java六、ResponseStandard.java七、访问 localhost:8080/doc.html

GitHub:link. 欢迎star

注意:本篇博客风格(不多比比就是撸代码!!!)

一、maven依赖

<!-- swagger --><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></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.9</version></dependency>

二、SwaggerConfig.java

import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.ParameterBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.schema.ModelRef;import springfox.documentation.service.Contact;import springfox.documentation.service.Parameter;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;import java.util.ArrayList;import java.util.List;/*** @author Andon* /11/10*/@EnableSwagger2@Configurationpublic class SwaggerConfig {private static final String headerKey = "token"; //header参数的key@Beanpublic Docket createRestApi() {// 添加header参数headerKeyParameterBuilder parameterBuilder = new ParameterBuilder();List<Parameter> parameterList = new ArrayList<>();parameterBuilder.name(headerKey).description(headerKey).modelRef(new ModelRef("string")).parameterType("header").required(false).build();parameterList.add(parameterBuilder.build());return new Docket(DocumentationType.SWAGGER_2).pathMapping("/").select().apis(RequestHandlerSelectors.basePackage("com.andon.springbootutil.controller")).paths(PathSelectors.any()).build().globalOperationParameters(parameterList).apiInfo(new ApiInfoBuilder().title("spring-boot-util").description("").version("v1.0").contact(new Contact("", "", "")).license("").licenseUrl("").build());}}

三、两种高版本启动报错Failed to start bean 'documentationPluginsBootstrapper’解决办法

1、配置WebMvcConfigurer.java

import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;/*** @author Andon* /12/29*/@Configurationpublic class WebMvcConfigurer extends WebMvcConfigurationSupport {/*** 发现如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。 需要重新指定静态资源*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("swagger-ui.html", "doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");super.addResourceHandlers(registry);}}

2、配置文件添加spring.mvc.pathmatch.matching-strategy=ant_path_matcher

spring:mvc:pathmatch:matching-strategy: ant_path_matcher

四、TestSwaggerController.java

import com.andon.springbootutil.domain.ResponseStandard;import com.andon.springbootutil.service.TestSwaggerService;import com.andon.springbootutil.vo.TestSwaggerTest2Req;import com.andon.springbootutil.vo.TestSwaggerTest2Resp;import com.andon.springbootutil.vo.TestSwaggerTestResp;import io.swagger.annotations.Api;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;/*** @author Andon* /11/10*/@Api(tags = "测试swagger接口文档")@RestController@RequestMapping(value = "/swagger")public class TestSwaggerController {@Resourceprivate TestSwaggerService testSwaggerService;@ApiOperation("测试")@ApiImplicitParams({@ApiImplicitParam(name = "param1", value = "参数1", required = true),@ApiImplicitParam(name = "param2", value = "参数2", required = true),})@GetMapping(value = "/test")public ResponseStandard<TestSwaggerTestResp> test(@RequestParam String param1, @RequestParam String param2) {return testSwaggerService.test(param1, param2);}@ApiOperation("测试2")@PostMapping(value = "/test2")public ResponseStandard<TestSwaggerTest2Resp> test(@RequestBody TestSwaggerTest2Req testSwaggerTest2Req) {return testSwaggerService.test2(testSwaggerTest2Req);}}

五、TestSwaggerTest2Req.java

import io.swagger.annotations.ApiModelProperty;import lombok.*;import java.io.Serializable;/*** @author Andon* /11/10* <p>* test2*/@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class TestSwaggerTest2Req implements Serializable {@ApiModelProperty(value = "参数1", required = true)private String param1;@ApiModelProperty(value = "参数2", required = true)private String param2;}

六、ResponseStandard.java

import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;/*** @author Andon* /11/10*/@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class ResponseStandard<T> implements Serializable {private int code;private String message;private T data;private int total;public static <T> ResponseStandard<T> successResponse(T t) {ResponseStandard<T> response = new ResponseStandard<>();response.setCode(0);response.setMessage("success!!");response.setData(t);response.setTotal(0);return response;}public static <T> ResponseStandard<T> failureResponse(T t) {ResponseStandard<T> response = new ResponseStandard<>();response.setCode(-1);response.setMessage("failure!!");response.setData(t);response.setTotal(0);return response;}}

七、访问 localhost:8080/doc.html

GitHub:link. 欢迎star

如果觉得《SpringBoot 整合 Swagger》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。