我的配置如下所示:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.docs.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.docs.version}</version>
<scope>compile</scope>
</dependency>
//P.S. <swagger.docs.version>2.9.2</swagger.docs.version>
@Configuration
@ComponentScan(basePackageClasses = {ControllerPackageMarker.class, MappersPackageMarker.class})
@EnableWebMvc
@EnableSwagger2
@PropertySource("classpath:media.upload.properties")
public class WebMvcConfig implements WebMvcConfigurer {
@Value("${upload.path}")
private String path;
@Value("${max.file.size}")
private long maxFileSize;
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(12);
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new AuthenticationPrincipalArgumentResolver());
}
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(maxFileSize);
return multipartResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
boolean isWindows = System.getProperty("os.name").contains("Windows");
registry.addResourceHandler("/img/**")
.addResourceLocations(isWindows ? "file:///" + path : "file://" + path);
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.any())
.paths(PathSelectors.any())
.build();
}
}
根据文档,pom中的bean和依赖项就足够了,但是当我点击链接localhost:8080/swagger-ui.html时它什么也没显示((
在安全配置中,我指出antMathers("/swagger-ui.html").permitAll();
这是结果:
从屏幕截图中可以看出,它让我进入页面,但页面完全是空的
(所有控制器到位)
UPD:/v2/api-docs工作,返回 json
以下网址 (404) 不起作用:
app_root/v2/swagger-ui/
app_root/swagger-ui/


什么)
允许 url
/swagger-ui.html是不够的。这是解决我的问题的方法:我在 SpringSecurity 配置中覆盖了它并且一切正常
/swagger-ui.html由于依赖,它在其中一个项目中对我不起作用如果无法修复,可以下载构建
swagger ui并将其作为静态文件上传(https://github.com/swagger-api/swagger-ui/releases/tag/v3.47.1目录dist)但总的来说,我建议把目光放在一边
openApi