springboot版本:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <version>2.7.0</version> </dependency>
swagger版本:
<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>
问题1:
报错如下:
Cannot set parent bean factory to self
或者:
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
解决方法:
1)启动类上加 @EnableWebMvc 注解
2)修改配置文件application.yaml
spring: mvc: pathmatch: matching-strategy: ant_path_matcher
问题2:http://localhost:8080/swagger-ui.html 页面404
idea 控制台警告:
WARN 18696 --- [nio-8080-exec-2] o.s.web.servlet.PageNotFound : No mapping for GET /swagger-ui.html
WARN 18696 --- [nio-8080-exec-1] o.s.web.servlet.PageNotFound : No mapping for GET /favicon.ico
解决方法:
修改swagger配置类,SwaggerConfig ,实现 WebMvcConfigurer接口,重写父类方法
具体代码如下:
@Configuration @EnableSwagger2 public class SwaggerConfig implements WebMvcConfigurer { // 重写父类方法 @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/"); } @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.service.controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("接口文档") .description("接口文档") .version("1.0.0") .build(); } }