Web/환경설정 관련

Spring boot - 정적 리소스 설정 변경

now0204 2024. 5. 10. 16:34

목적: 지금까지 스프링 혹은 부트를 사용하며, 여러 설정들을 적어 둔 것을 정리 하기 위해 작성

 

  •  spring MVC에서 url로 들어온 클라이언트의 요청을 정적 리소스(html,css,javascript 등등) 혹은 동적 리소스(jsp 등 뷰 템플릿)를 활용해서 처리한다.
  •  컨트롤러 메서드에 url을 맵핑하듯, 정적 리소스에도 접근 가능한 url 맵핑이 필요하다. 이에 대한 설정을 알아보자 

 

 

1. classpath

 

  • classpath란 빌드시 컴파일 된 class 파일들과 resources의 최상위 경로이다.
  • 설정 파일 (.yml, properties)는 해당 경로 아래 어느 곳이든 존재만 해야한다.

 

  • Project Structure 탭을 통해 쉽게 확인할 수 있다. 

2. 정적 리소스 기본 위치 

 

  • 다음 4가지 위치에 정적 리소스가 있을 경우, 따로 경로를 스프링 부트 설정에 추가할 필요 없이 자동으로 인식한다
  • pathPattern = /** .
    • classpath:/static
    • classpath:/public
    • classpath:/resources/
    • classpath:/META-INF/resources

3. 정적 리소스 기본 위치 변경

 

  • 정적 리소스의 기본 위치를 변경하면, 해당 패턴 즉 특정 위치에 정적 리소스만 호출 url로 호출 할 수 있다. 
  • 정적 리소스의 위치를 원하는 위치로 변경
  • 이제 해당 위치에 정적 리소스만 url로 접근 가능하고, 나머지는 안된다.
spring.mvc.static-path-pattern=/newstatic/**


4. 정적 리소스 위치 추가 

 

  • 기본 정적 리소스에 새로운 맵핑을 추가해서 정적 리소스 제공하도록 커스텀 하는 방법이다.
  • /public url에 대해 다음 경로(classpath:/public/)와 연결해 주는 것이다.    
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/public/**") //해당 경로 요청시
                .addResourceLocations("classpath:/public/")//classpath 하위에 public 디렉토리에서 찾음
                .setCachePeriod(20);//캐싱
    }
}

 

 

 

참고자료 

https://cocococo.tistory.com/

 

한발짝 두발짝, 개발짝

나의 개발 해방 일지

cocococo.tistory.com