package com.alttd.altitudeweb.config; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.resource.PathResourceResolver; import java.io.IOException; @Slf4j @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/browser") .resourceChain(true) .addResolver(new PathResourceResolver() { @Override protected Resource getResource(String resourcePath, Resource location) throws IOException { Resource requestedResource = location.createRelative(resourcePath); if (requestedResource.exists() && requestedResource.isReadable()) { log.debug("Serving resource {} from {}", resourcePath, location); return requestedResource; } log.debug("Resource {} not found in {}, serving index.html", resourcePath, location); return new ClassPathResource("/static/browser/index.html"); } }); } @Controller public static class HomeController { @GetMapping("/") public String index() { return "forward:/index.html"; } } }