当前位置:   article > 正文

No mapping for GET /swagger-ui.html报错

no mapping for get /swagger-ui.html

今天搞Springboot工程的时候发现访问不了,报错如下

浏览器端访问又报错如下:This application has no explicit mapping for /error

Swagger的配置类改成实现WebMvcConfigurer就可以了
 

原先的类是继承方式的,如下:

此外,还需要添加放行资源(覆写 addResourceHandlers 方法),整个配置类如下(这是之后更新上来的内容):

  1. package com.boss.shared;
  2. import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  6. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  7. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  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.service.Contact;
  13. import springfox.documentation.spi.DocumentationType;
  14. import springfox.documentation.spring.web.plugins.Docket;
  15. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  16. /**
  17. * @Author: lequal
  18. * @Description 访问的时候直接输入地址:http://localhost:80/boss/doc.html (或者省略端口http://localhost/boss/doc.html) 即可看到API接口文档
  19. * 如果需要导出文档,只需要在文档页面左侧的菜单 -> 文档管理 -> 离线文档中即可下载对应的文档
  20. * @Date 2022/7/28
  21. */
  22. @Configuration
  23. @EnableSwagger2
  24. @EnableKnife4j
  25. // @EnableWebMvc // 如果jackson不会序列化返回数据中的null值(会忽略掉),则打开该注解
  26. public class SwaggerConfig implements WebMvcConfigurer {
  27. @Bean
  28. public Docket api() {
  29. return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).pathMapping("/").select()
  30. .apis(RequestHandlerSelectors.basePackage("com.boss")).paths(PathSelectors.any()).build();
  31. }
  32. private ApiInfo apiInfo() {
  33. ApiInfo apiInfo = new ApiInfoBuilder().title("xxx接口文档").termsOfServiceUrl("http://swagger.io/")
  34. .contact(new Contact("lequal", "www.www.www", "www@qq.com")).description("暂时没有描述").version("0.0.1Apah").build();
  35. return apiInfo;
  36. }
  37. /**
  38. * @Author: lequal
  39. * @Description 添加放行资源
  40. * @Date 2022/7/28 0028 10:28
  41. * @Param [registry]
  42. * @return void
  43. */
  44. @Override
  45. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  46. registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
  47. registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
  48. registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
  49. registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  50. }
  51. }

注意:

        整个工程如果需要做任何与MVC相关的配置,推荐都统一实现 WebMvcConfigurer 接口来实现;而不是A配置类使用继承 WebMvcConfigurationSupport 

(或者继承WebMvcConfigurerAdapter,但是该类已经标记为废弃)方式,

到了B配置类又换成了实现 WebMvcConfigurer 接口来做。这两者同时使用有可能导致拦截器失效。

  1. 1 WebMvcConfigurerAdapter 是 WebMvcConfigurer 的实现类大部分为空方法
  2. (由于Java8中可以使用 default 关键字为接口添加默认方法,所以在源代码中spring5.0之后就已经弃用本类)
  3. 如果需要我接着可以实现 WebMvcConfigurer 接口。
  4. 2 WebMvcConfigurationSupport 是 mvc 的基本实现并包含了 WebMvcConfigurer 接口中的方法
  5. 3 WebMvcAutoConfiguration 是 mvc 的自动装在类并部分包含了 WebMvcConfigurer 接口中的方法
  6. 4 如果在 springboot 项目中没有使用到以上类,那么会自动启用 WebMvcAutoConfiguration 类做自动加载;项目中的配置都是默认的,比如静态资源文件的访问
  1. 1 重写 WebMvcConfigurationSupport 后 SpringBoot 自动配置失效
  2. 2 @EnableWebMvc 实现原理实际上是导入了 DelegatingWebMvcConfiguration 配置类,等价于 @Configuration + 继承该类
  3. 3 引用了 @EnableWebMVC 注解,就会往spring容器中注入了一个 DelegatingWebMvcConfiguration 来统一管理所有的配置类

  1. 0 springboot 自动配置类 -> WebMvcAutoConfiguration(包括 内部的配置类:WebMvcAutoConfigurationAdapter#addResourceHandlers 等)
  2. 1 实现 WebMvcConfigurer: 不会覆盖 WebMvcAutoConfiguration 的配置
  3. 2 实现 WebMvcConfigurer + 注解 @EnableWebMvc:会覆盖 WebMvcAutoConfiguration 的配置
  4. 3 (推荐)继承 DelegatingWebMvcConfiguration:会覆盖 WebMvcAutoConfiguration 的配置
  5. 4 继承 WebMvcConfigurationSupport:会覆盖 WebMvcAutoConfiguration 的配置

====================================

另外附上我的pom.xml

然后就可以访问了

访问地址:http://localhost:8089/swagger-ui.html

后面会更新一篇新版本Springboot配置Swagger(Knife4j)的完整配置教程

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

闽ICP备14008679号