Swagger2配置⽅式(解决404报错)
⽬录
Swagger2配置(解决404报错)
⼀、引⼊依赖
⼆、编写配置⽂件
三、解决404报错
swagger配置好后仍然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.fig;
lemon.base.Function;
lemon.base.Optional;
lemon.base.Predicate;
import t.annotation.Bean;
import t.annotation.Configuration;
import org.springframework.fig.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.ller.v1"))  //这⾥采⽤包扫描的⽅式来确定要显⽰的接⼝
// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                        //这⾥采⽤包含注解的⽅式来确定要显⽰的接⼝                .paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("CMS")
.description("电商⼩程序 CMS Api⽂档")
.termsOfServiceUrl("blog.csdn/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 = Package().getName().startsWith(strPackage);
if (isMatch) {
return true;
}
}
return false;
};
}
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
return Optional.fromNullable(input.declaringClass());
}
}
如果访问成功则不需要继续下⾯的配置,如果访问失败出现404报错,则进⾏下⾯的配置
三、解决404报错
package io.github.fig;
import t.annotation.Configuration;
import org.springframework.fig.annotation.ResourceHandlerRegistry;
import org.springframework.fig.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/");
}
}
reactive web原理就是帮助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配置
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。