Swagger2配置方式(解决404报错)
Swagger2配置(解决404报错)
在spring boot项目中配置Swagger2,配置好了但是访问确实404,SwaggerConfig中的注入方法也执行了还是访问不到页面。究其原因是MVC没有找到swagger-ui包中的swagger-ui.html文件。
Swagger2的配置步骤如下:
一、引入依赖
pom.wml
<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>
二、编写配置文件
package io.github.talelin.latticy.config; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { // 定义分隔符 private static final String splitor = ";"; @Bean Docket docket() { System.out.println("Swagger==========================================="); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(basePackage("io.github.talelin.latticy.controller.v1")) //这里采用包扫描的方式来确定要显示的接口 // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //这里采用包含注解的方式来确定要显示的接口 .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("CMS") .description("电商小程序 CMS Api文档") .termsOfServiceUrl("https://blog.csdn.net/xfx_1994") .version("1.0") .build(); } public static Predicate <RequestHandler> basePackage(final String basePackage) { return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true); } private static Function <Class<?>, Boolean> handlerPackage(final String basePackage) { return input -> { // 循环判断匹配 for (String strPackage : basePackage.split(splitor)) { boolean isMatch = input.getPackage().getName().startsWith(strPackage); if (isMatch) { return true; } } return false; }; } private static Optional<? extends Class<?>> declaringClass(RequestHandler input) { return Optional.fromNullable(input.declaringClass()); } }
至此已经配置完成,启动项目访问 http://localhost: p o r t / {port}/ port/{context-path}/swagger-ui.html
如果访问成功则不需要继续下面的配置,如果访问失败出现404报错,则进行下面的配置
三、解决404报错
package io.github.talelin.latticy.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfig 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/"); } }
原理就是帮助MVC找到 swagger-ui.html 及其 CSS,JS 对应的文件
swagger配置好后仍然404问题
记录一下 学习spring boot 遇到的问题
swagger2
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); }
swagger 添加此配置之后仍然404
1.有可能是 有其他类 实现了 WebMvcConfigurer 或者 继承了 WebMvcConfigurationSupport
导致的WebMvcConfigurationSupport 在继承的时候 没有重写addResourceHandlers
2.spring boot 启动模式有三种 如果默认没有改动的话 应该是SERVLET
NONE
SERVLET
REACTIVE
注意查看 只有SERVLET 会加载webmvc配置
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决Java变异出现错误No enclosing instance of type XXX is accessible
这牌你文章主要给大家分享解决Java变异出现错误,具体的饥饿绝方案请看下面文章的内容,需要的朋友可以参考一下,希望能帮助到你2021-09-09手把手教你如何用JAVA连接MYSQL(mysql-connector-j-8.0.32.jar)
这篇文章主要介绍了关于如何用JAVA连接MYSQL(mysql-connector-j-8.0.32.jar)的相关资料,文中通过图文介绍的非常详细,对大家学习或者使用MySQL具有一定的参考借鉴价值,需要的朋友可以参考下2024-01-01Java核心编程之文件随机读写类RandomAccessFile详解
这篇文章主要为大家详细介绍了Java核心编程之文件随机读写类RandomAccessFile,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-08-08
最新评论