Spring Boot DevTools 활용하기 – 개발 생산성을 높이는 자동 리로드 기능

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는 단순한 의존성 추가만으로 개발 피드백 루프를 획기적으로 개선 할 수 있는 도구입니다.

클래스 변경 → 저장 → 즉시 반영이라는 간단한 사이클로 개발 효율을 극대화할 수 있죠.

특히 프론트와 백엔드를 동시에 개발하거나, 잦은 설정 변경이 필요한 시점 에 필수적인 도구이므로 꼭 활용해보시길 추천드립니다.