상황 : Controller 에서 Templates 경로의 View 를 반환하는데 404가 발생

다음의 상황에서 localhost:8080/testMain 를 접속하면 404가 뜨는 것을 볼 수 있습니다.

이 경우, 다음과 같은 설정을 해줘야 합니다.

위의 설정을 하나하나 뜯어보도록 하겠습니다.

 

WebMvcConfigurer

WebMvcConfigurer 을 사용하면 @EnableWebMvc 가 자동적으로 세팅해주는 설정에 개발자가 원하는 설정을

추가할 수 있습니다.

 

 

@EnableWebMvc

Spring Framework 에서 여러 Config 값을 알아서 세팅해줍니다.

 

 

addResourceHandler

정적인 Resource 를 처리하기 위해 사용되는 Handler 입니다.

기본적으로 서블릿 컨테이너에는 정적인 자원을 처리할 수 있는 서블릿이 등록되어 있습니다.

그래서 프로젝트를 생성하고 아무 설정을 안해도 리소스 요청에 동작을 합니다. ( ex. static Directory )

 

하지만, 특정 요청에 대한 리소스를 컨트롤해야 한다면 리소스 핸들러를 정의해서 config 에 등록해줘야 합니다.

이때, addResource Handler 메서드를 통해 어느 경로로 들어왔을 때 매핑이 되어줄 것인지를 정의해줍니다.

registry.addResourceHandler("/static/**")

이후 addResourceLocations 메서드를 통해 실제 파일이 있는 경로를 설정해줍니다.

그래서 보면 Main 경로가 있는 templates 와 css/js 파일이 있는 static 을 경로 설정을 해줬습니다.

만약, static 경로를 css / js 등등을 따로 나눠서 잡아야 한다면 다음과 같이 설정해줘야 합니다.

registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css").setCachePeriod(false)
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js").setCachePeriod(false)

 

+ Recent posts