-
Spring boot - 정적 리소스 설정 변경Web/환경설정 관련 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);//캐싱 } }
참고자료
'Web > 환경설정 관련' 카테고리의 다른 글
스프링 부트 구성 - @Import, @Conditional 활용 (0) 2024.05.13 스프링 부트 애플리케이션 시작 시 코드 실행 (CommandLineRunner) (0) 2024.05.10 Spring boot - 설정 파일 관리 (@Profile, @ConfigurationProperties,@Value,@PropertySource) (0) 2024.05.10 웹 어플리케이션 배포 (0) 2023.07.22 Eclipse에서 Web개발을 위한 환경설정 (0) 2023.05.20