赞
踩
第一步、在pom文件导入knif4j依赖
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-spring-boot-starter</artifactId>
- <version>3.0.3</version>
- </dependency>
第二步、配置swagger
- package com.xmx.config;
-
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.config.BeanPostProcessor;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.util.ReflectionUtils;
- import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
- 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;
- import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
- import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
- import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
-
- import java.lang.reflect.Field;
- import java.util.List;
- import java.util.stream.Collectors;
-
- @Configuration
- @EnableSwagger2WebMvc
- public class Knife4jConfig {
-
-
- @Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- // apiInfo():配置 API 的一些基本信息,比如:文档标题title,文档描述description,文档版本号version
- .apiInfo(apiInfo())
- // select():生成 API 文档的选择器,用于指定要生成哪些 API 文档
- .select()
- // apis():指定要生成哪个包下的 API 文档
- .apis(RequestHandlerSelectors.basePackage("com.xmx.controller"))
- // paths():指定要生成哪个 URL 匹配模式下的 API 文档。这里使用 PathSelectors.any(),表示生成所有的 API 文档。
- .paths(PathSelectors.any())
- .build();
- }
- private static final String API_TILE="xx项目";
- //文档信息配置
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- // 文档标题
- .title(API_TILE)
- // 文档描述信息
- .description("xxx在线API文档")
- // 文档版本号
- .version("1.0")
- .build();
- }
- @Bean
- public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
- return new BeanPostProcessor() {
-
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
- customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
- }
- return bean;
- }
-
- private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
- List<T> copy = mappings.stream()
- .filter(mapping -> mapping.getPatternParser() == null)
- .collect(Collectors.toList());
- mappings.clear();
- mappings.addAll(copy);
- }
-
- @SuppressWarnings("unchecked")
- private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
- try {
- Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
- field.setAccessible(true);
- return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
- } catch (IllegalArgumentException | IllegalAccessException e) {
- throw new IllegalStateException(e);
- }
- }
- };
- }
-
-
-
- }
-

第三步、在application.yaml文件中配置
spring: mvc: pathmatch: matching-strategy: ant_path_matcher
第四步、访问:http://localhost:8002/doc.html访问文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。