当前位置:   article > 正文

SpringBoot 2.6.13整合knif4j 3.0.3_springboot2.6 knife4j

springboot2.6 knife4j

第一步、在pom文件导入knif4j依赖

  1. <dependency>
  2. <groupId>com.github.xiaoymin</groupId>
  3. <artifactId>knife4j-spring-boot-starter</artifactId>
  4. <version>3.0.3</version>
  5. </dependency>

第二步、配置swagger

  1. package com.xmx.config;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.beans.factory.config.BeanPostProcessor;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.util.ReflectionUtils;
  7. import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
  8. import springfox.documentation.builders.ApiInfoBuilder;
  9. import springfox.documentation.builders.PathSelectors;
  10. import springfox.documentation.builders.RequestHandlerSelectors;
  11. import springfox.documentation.service.ApiInfo;
  12. import springfox.documentation.spi.DocumentationType;
  13. import springfox.documentation.spring.web.plugins.Docket;
  14. import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
  15. import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
  16. import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
  17. import java.lang.reflect.Field;
  18. import java.util.List;
  19. import java.util.stream.Collectors;
  20. @Configuration
  21. @EnableSwagger2WebMvc
  22. public class Knife4jConfig {
  23. @Bean
  24. public Docket createRestApi() {
  25. return new Docket(DocumentationType.SWAGGER_2)
  26. // apiInfo():配置 API 的一些基本信息,比如:文档标题title,文档描述description,文档版本号version
  27. .apiInfo(apiInfo())
  28. // select():生成 API 文档的选择器,用于指定要生成哪些 API 文档
  29. .select()
  30. // apis():指定要生成哪个包下的 API 文档
  31. .apis(RequestHandlerSelectors.basePackage("com.xmx.controller"))
  32. // paths():指定要生成哪个 URL 匹配模式下的 API 文档。这里使用 PathSelectors.any(),表示生成所有的 API 文档。
  33. .paths(PathSelectors.any())
  34. .build();
  35. }
  36. private static final String API_TILE="xx项目";
  37. //文档信息配置
  38. private ApiInfo apiInfo() {
  39. return new ApiInfoBuilder()
  40. // 文档标题
  41. .title(API_TILE)
  42. // 文档描述信息
  43. .description("xxx在线API文档")
  44. // 文档版本号
  45. .version("1.0")
  46. .build();
  47. }
  48. @Bean
  49. public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
  50. return new BeanPostProcessor() {
  51. @Override
  52. public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
  53. if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
  54. customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
  55. }
  56. return bean;
  57. }
  58. private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
  59. List<T> copy = mappings.stream()
  60. .filter(mapping -> mapping.getPatternParser() == null)
  61. .collect(Collectors.toList());
  62. mappings.clear();
  63. mappings.addAll(copy);
  64. }
  65. @SuppressWarnings("unchecked")
  66. private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
  67. try {
  68. Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
  69. field.setAccessible(true);
  70. return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
  71. } catch (IllegalArgumentException | IllegalAccessException e) {
  72. throw new IllegalStateException(e);
  73. }
  74. }
  75. };
  76. }
  77. }

第三步、在application.yaml文件中配置

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

 第四步、访问:http://localhost:8002/doc.html访问文档

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/352995
推荐阅读
相关标签
  

闽ICP备14008679号