zoukankan      html  css  js  c++  java
  • Springboot 集成Swagger

    Springboot版本 2.1.14.RELEASE
    Swagger版本 2.9.2

    1. 引入jar pom.xml中加入

    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <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>
    

    2. 加入配置

    public class WebConfiguration implements WebMvcConfigurer {
    
      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations(
            "classpath:/static/");
        registry.addResourceHandler("/swagger-ui.html").addResourceLocations(
            "classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations(
            "classpath:/META-INF/resources/webjars/");
      }
    }
    

    3. 如果发现配置了之后仍然无法访问,可以跟踪下源代码 找到正确答案

    通过 addResourceHandlers找到父类 org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration#addResourceHandlers
    再向上一级 org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport#resourceHandlerMapping

        @Bean
        @Nullable
        public HandlerMapping resourceHandlerMapping() {
            Assert.state(this.applicationContext != null, "No ApplicationContext set");
            Assert.state(this.servletContext != null, "No ServletContext set");
    
            ResourceHandlerRegistry registry = new ResourceHandlerRegistry(this.applicationContext,
                this.servletContext, mvcContentNegotiationManager(), mvcUrlPathHelper());
            **addResourceHandlers(registry);**
    
            AbstractHandlerMapping handlerMapping = registry.getHandlerMapping();
            if (handlerMapping == null) {
                return null;
            }
            handlerMapping.setPathMatcher(mvcPathMatcher());
            handlerMapping.setUrlPathHelper(mvcUrlPathHelper());
            handlerMapping.setInterceptors(getInterceptors());
            handlerMapping.setCorsConfigurations(getCorsConfigurations());
            return handlerMapping;
        }      
    

    关键一行代码 addResourceHandlers(registry);

    WebMvcConfigurationSupport 有一个空的实现方法
    /**
      * Override this method to add resource handlers for serving static resources.
      * @see ResourceHandlerRegistry
    */
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {      
    }
    

    有人提示 重写该方法,我试了下没有作用。
    别人的答案永远只是必然的答案
    不过你可以试试,对不对全看运气。

    跟踪源码找答案,进步中。。。

  • 相关阅读:
    使用Newtonsoft进行JSON序列化时将枚举序列化为字符串的方法
    通过javac导出Jar包
    JAVA中JDBC连接Mysql数据库简单测试
    使用Swashbuckle.AspNetCore生成.NetCore WEBAPI的接口文档
    CentOS7中使用yum安装Nginx的方法
    Dockerfile 指令 ADD 和 COPY介绍
    Azure Web应用中设置静态虚拟目录的方法(比如部署Django需要用到)
    pip常用命令(转载)
    android发布新版忘记keystore(jks)密码终极解决方案
    IntelliJ Idea 常用快捷键列表
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/13186722.html
Copyright © 2011-2022 走看看