no handler found spring boot static resource

공부는 혼자하는 거·2022년 9월 23일
0

에러모음

목록 보기
20/28

이걸로 개삽질했으므로 기록을 남겨본다.

스프링부트의 정적리소스 경로는 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/");
    }

정확한 이유는 아직 못 파악했지만, 좀 알아보고 써야겠다고 다시 한 번 느낀다.

profile
시간대비효율

0개의 댓글