728x90
스프링 부트의 정적 리소스 기본 구조
스프링 부트는 resources/static 디렉토리 하위의 파일들을 자동으로 정적 리소스로 인식합니다.
특별한 설정 없이 아래 위치에 파일을 넣기만 하면 URL로 바로 접근할 수 있어요.
src/
└── main/
└── resources/
├── static/ ← 정적 리소스 위치
│ ├── css/
│ ├── js/
│ ├── images/
│ └── favicon.ico
└── templates/ ← HTML 템플릿 (Thymeleaf 등)
예시 - URL 매핑
파일 경로 | 접근 URL |
static/css/style.css | /css/style.css |
static/js/app.js | /js/app.js |
static/images/logo.png | /images/logo.png |
static/favicon.ico | /favicon.ico |
정적 파일 추가 예제
1. src/main/resources/static/css/style.css
body {
background-color: #f0f0f0;
font-family: sans-serif;
}
2. Thymeleaf HTML 템플릿에서 사용하기
<link rel="stylesheet" th:href="@{/css/style.css}">
@{} 문법은 컨텍스트 경로를 자동으로 적용해줍니다.
캐시 설정 (선택)
정적 리소스는 기본적으로 캐시될 수 있어, 변경해도 브라우저가 이전 파일을 불러올 수 있습니다. 이를 방지하려면
application.properties에 다음과 같이 설정합니다:
spring.web.resources.cache.period=0
혹은 버전 쿼리 파라미터 활용:
<script th:src="@{/js/app.js(v=${version})}"></script>
정적 리소스 우선순위
스프링 부트는 다음 경로에서 정적 리소스를 자동으로 찾습니다 (우선순위 순):
- classpath:/static/
- classpath:/public/
- classpath:/resources/
- classpath:/META-INF/resources/
일반적으로 static/ 디렉토리를 가장 많이 사용합니다.
커스터마이징
WebMvcConfigurer를 상속받아 정적 리소스 핸들링 경로를 커스터마이징할 수 있어요:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**")
.addResourceLocations("classpath:/custom-static/");
}
}
위 설정 시 classpath:/custom-static/logo.png → /assets/logo.png로 접근 가능
마무리 요약
항목 | 설명 |
정적 리소스 위치 | src/main/resources/static/ |
URL 매핑 방식 | 디렉토리 구조 그대로 매핑됨 (/css/style.css) |
대표 리소스 | CSS, JS, 이미지, favicon 등 |
템플릿에서 사용 | @{/경로} 방식으로 연결 |
커스터마이징 | WebMvcConfigurer로 경로 조정 가능 |
LIST
'SpringBoot > 웹 애플리케이션 개발' 카테고리의 다른 글
템플릿 엔진(Thymeleaf) 연동 (0) | 2025.04.14 |
---|---|
컨트롤러(@RestController, @Controller) (0) | 2025.04.14 |