Spring Boot로 웹 애플리케이션을 개발하다 보면, 간단한 설정 하나를 바꾼 후 서버를 매번 재시작하는 것이 꽤 번거롭습니다. 개발 생산성을 높이기 위해 Spring Boot DevTools를 사용하는 것을 추천합니다.
DevTools의 주요 기능, 설정 방법, 실무 적용 팁 까지 전반적으로 정리해 보겠습니다.
1. DevTools란 무엇인가?
spring-boot-devtools
는 Spring Boot에서 개발 편의를 위해 제공하는 개발 도구 모음입니다. 핵심 기능은 자동 리스타트(Hot Reload)로, 코드 수정 시 애플리케이션을 자동으로 재시작하여 변경 사항을 즉시 반영합니다.
- 자동 리스타트 (Auto Restart)
- 라이브 리로드 (LiveReload 지원)
- 템플릿 자동 캐시 해제 (Thymeleaf, FreeMarker 등)
- 환경별 속성 설정 지원 (예:
application-dev.properties
)
개발자 입장에서 가장 눈에 띄는 장점은, 속도와 생산성 향상 입니다.
2. Gradle/Maven에 DevTools 의존성 추가
Gradle 기준 설정은 아래와 같습니다.
dependencies {
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
developmentOnly
로 설정하면, production 빌드 시 포함되지 않아 안전합니다.
Maven을 사용하는 경우:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
3. 자동 리로드 작동 방식
DevTools는 클래스패스 상의 파일 변경을 감지하면, 내부적으로 ClassLoader를 새로 생성하여 전체 ApplicationContext를 재시작합니다. 이는 완전한 JVM 재시작은 아니기 때문에, 매우 빠르게 반영 됩니다.
기본적으로는 src/main/java, src/main/resources 디렉토리 내 파일 변경 시 작동합니다.
4. IntelliJ IDEA와의 연동 팁
DevTools의 자동 리스타트 기능이 제대로 작동하려면, IDE에서 컴파일 후 클래스 변경 사항이 자동 반영 되어야 합니다.
IntelliJ에서 설정할 항목:
- [Build, Execution, Deployment] → [Compiler] → "Build project automatically" 체크
- Registry에서
compiler.automake.allow.when.app.running
활성화
Registry 설정은
Ctrl+Shift+A
→ “Registry” → 해당 항목 검색 후 체크로 가능.
5. LiveReload 활용 (선택)
DevTools는 기본적으로 LiveReload
서버도 내장합니다. 브라우저 확장 프로그램(LiveReload 플러그인)을 설치하면 HTML, CSS 변경도 자동 반영 됩니다.
단, 보안 이슈나 브라우저 설정에 따라 동작하지 않을 수도 있으므로 선택적으로 사용하세요.
6. DevTools로 자동 적용되지 않는 경우
다음과 같은 상황에서는 자동 리스타트가 되지 않습니다.
- 빌드 도구가 파일을
build/classes
에 반영하지 않는 경우 - IntelliJ의 “자동 빌드” 설정이 꺼져 있는 경우
- static 파일 (JS, 이미지 등)은 기본적으로 캐싱됨
필요 시 spring.devtools.restart.exclude
또는 include
옵션으로 조정할 수 있습니다.
# 예시: restart 대상에서 일부 디렉토리 제외
spring.devtools.restart.exclude=static/**,public/**
7. 실무에서 DevTools 활용 팁
- 개발 중에는 IDE + DevTools 조합으로 빠르게 UI 및 API 반영
- 프로덕션 배포 시 DevTools는 제외되도록 설정
- 로컬에서 테스트 시에도
LiveReload
설정은 선택적 사용 - 템플릿 엔진 캐시를 자동 비활성화하므로 UI 디버깅에 유용
결론
Spring Boot DevTools는 단순한 의존성 추가만으로 개발 피드백 루프를 획기적으로 개선 할 수 있는 도구입니다.
클래스 변경 → 저장 → 즉시 반영이라는 간단한 사이클로 개발 효율을 극대화할 수 있죠.
특히 프론트와 백엔드를 동시에 개발하거나, 잦은 설정 변경이 필요한 시점 에 필수적인 도구이므로 꼭 활용해보시길 추천드립니다.
'개발 > JAVA' 카테고리의 다른 글
Spring Boot에서 @Value를 사용해 properties 값 주입하기 (0) | 2025.09.26 |
---|---|
Spring Boot에서 SLF4J와 Logback으로 로깅 설정하기 (0) | 2025.09.25 |
@Configuration과 @Bean의 차이 – Spring 개발자라면 반드시 짚고 가야 할 핵심 개념 (0) | 2025.09.23 |
Spring Profile로 환경별 설정 관리하기 – 개발자라면 꼭 알아야 할 환경 분리 전략 (0) | 2025.09.22 |
@Autowired vs 생성자 주입 – 스프링 DI에서 가장 많이 묻는 질문 (0) | 2025.09.21 |