이걸로 개삽질했으므로 기록을 남겨본다.
스프링부트의 정적리소스 경로는 resources 내에 static 폴더 경로로 자동 잡힌다.
부트의 autoconfiguration 살펴보면
web:
resources:
static-locations:
--- yml
public static class Resources {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
요렇게 설정되어 있다는 걸 알 수 있다.
문제는 건드린 게 없는 것 같은데 정적자원 경로를 잡지 못한다는 것이었다.
원인은 내가 달은 @EnableWebMvc 이다.
이 어노테이션은 부트가 제공하는 autoconfig를 무시하는 듯 했다.
@Configuration
// @EnableWebMvc 주석처리하니된다!!
class WebMvcConfig () : WebMvcConfigurer {
private val log = KotlinLogging.logger { }
private val apiVersion = "/v1"
override fun configurePathMatch(configurer: PathMatchConfigurer) {
log.info { ">>>>>> $apiVersion" }
configurer.addPathPrefix(apiVersion,
HandlerTypePredicate.forAnnotation(RestController::class.java)
)
}
override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
정확한 이유는 아직 못 파악했지만, 좀 알아보고 써야겠다고 다시 한 번 느낀다.