【发布时间】:2019-08-06 21:32:45
【问题描述】:
我有一个 spring-boot 应用程序,其中我将所有资源重定向到 index.html,因为我的前端是一个 SPA。
我想如何保持对localhost:8080/swagger-ui.html 的调用不变并覆盖所有其他调用。
addResourceHandler 似乎不适用于正则表达式。关于如何解决这个问题的任何想法?
import java.io.IOException;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.PathResourceResolver;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**/*") //^\/[^(api|swagger)].*
.addResourceLocations("classpath:/public/")
.resourceChain(true)
.addResolver(new PathResourceResolver() {
@Override
protected Resource getResource(String resourcePath, Resource location) throws IOException {
Resource requestedResource = location.createRelative(resourcePath);
return requestedResource.exists() && requestedResource.isReadable() ? requestedResource : new ClassPathResource("/public/index.html");
}
})
;
}
}
PS:我在内存中使用 spring fox。
【问题讨论】:
标签: java spring-boot swagger