原因是在项目里自定义了拦截器,继承了WebMvcConfigurationSupport这个类,在配置文件.properties里配置了server.servlet.context-path=/web,正常在pom文件里引用了swagger依赖,
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
重启项目,浏览器 http://localhost:端口号/web/swagger-ui.html 这样是不能访问的,一方面是被拦截器拦截啦,另一个是没有配置映射关系,是找不到swagger-ui.html这个页面的。经过查找资料,正确写法如下,红色是swagger配置重点,写的不好,大家多指教
@Configuration public class WebMvcConfig extends WebMvcConfigurationSupport { @Autowired private BossAuthIntercepter bossAuthIntercepter; // 配置映射关系 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/"); registry.addResourceHandler("/swaggerui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); } // 配置拦截规则 @Override protected void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(bossAuthIntercepter) .addPathPatterns("/**") //拦截所有请求 .excludePathPatterns("/error") .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); } }
BossAuthIntercepter类是自己定义的拦截规则,在这里用不上,可以去掉。
ResourceHandlerRegistry类用于保存服务静态资源图片,css
文件或者其他文件的资源处理器 (resource handler
)的注册信息
InterceptorRegistry类是拦截器,用于拦截访问的地址。
配置后,重启项目,浏览器登入http://localhost:端口号/web/swagger-ui.html,就可以访问啦