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);//캐싱
}
}
참고자료