首次进入一个团队做研发工作,因已有特定框架,所以工程进行了直接应用。应用后发现swagger无法访问,所以对该框架进行了研究,经过各种测试,最终访问swagger成功。现记录下处理过程。
访问http://localhost:8080/swagger-ui.html
因应用别的框架可访问swagger,并且可以使用@Api注解,所以排除未引入包的问题,实际检查,也可以找到maven引用。
再次查看配置情况,在框架中发现SwaggerConfig类,但是没有加@EnableSwagger2注解,因些,在服务增加新类SwaggerAqiConfig,继承SwaggerConfig,如下
访问还是404,参考其他人的意见,有可能是静态文件被拦截了,实际发现确实如此。因为访问http://localhost:8080/v2/api-docs,可以获取到api数据。因此增加WebConfig类,继承WebMvcConfigurationSupport,重写addResourceHandlers方法。如下
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/resources/")
.addResourceLocations("classpath:/static/")
.addResourceLocations("classpath:/pages/")
;
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}
再次访问还是404,再检查了swagger引用包,发现原框架中未引用swagger-ui包,如下
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
引入后成访问成功。
总结下,首先确保pom中需引入两个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>
再次检查配置情况,最后确保未过滤掉静态资源文件。