개발자/Spring

서버 재시작 없이 HTML 변경사항 실시간 반영하기: Spring Boot 개발자를 위한 가이드

푸루닉 2024. 2. 19. 15:41

 많은 개발자들이 Spring을 사용하여 웹 개발을 진행하면서, HTML 파일을 수정할 때마다 서버를 재시작해야 하는 번거로움에 직면했을 것입니다. 특히, HTML 파일에 소소한 변경을 적용할 때마다 서버를 다시 올리는 과정은 상당히 시간이 소요되며, 이는 개발 효율성을 크게 저하시킵니다.

 비록 Spring Boot의 등장으로 컴파일 시간이 단축되었다고는 하지만, VS Code와 같은 도구에서 제공하는 실시간 수정 및 미리보기 기능과 비교했을 때 여전히 개발 작업의 흐름을 방해하는 요소로 남아 있습니다.

 이러한 문제를 해결하기 위해, 서버를 재시작하지 않고도 HTML 파일의 변경사항을 실시간으로 렌더링하여 반영하는 방법이 필요합니다. 이는 개발자가 더욱 신속하게 작업을 진행하고, 즉각적인 피드백을 받을 수 있는 환경을 조성하여 개발 과정의 효율성을 대폭 향상시킬 수 있습니다.

 본문에서는 서버를 재시작하지 않고 HTML 파일을 재컴파일하고 렌더링하는 방법에 대해 소개하려 합니다. 이를 통해 개발자들이 보다 편리하고 빠르게 웹 개발 작업을 진행할 수 있게 되기를 기대합니다.

 

1. 의존성 추가하기

 먼저, 프로젝트의 build.gradle 파일에 spring-boot-devtools 의존성을 추가해야 합니다. 이렇게 함으로써 Spring Boot 애플리케이션 개발 시 필요한 여러 자동 설정과 빠른 로드 기능을 활성화할 수 있습니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-devtools'
}

 

 

2. 변경사항 반영하기

 spring-boot-devtools가 성공적으로 추가되었다면, 이제 HTML 파일을 수정하고 바로 결과를 볼 수 있습니다. IntelliJ IDEA와 같은 IDE에서는 HTML 파일을 수정한 뒤 Ctrl+Shift+F9 (Windows/Linux) 또는 Cmd+Shift+F9 (Mac)을 눌러 수정된 파일만을 재컴파일할 수 있습니다. 이 단축키는 현재 열려 있는 파일 또는 수정된 파일을 재컴파일하고, Spring Boot 애플리케이션은 spring-boot-devtools 덕분에 변경사항을 감지하고 자동으로 서버를 재시작하지 않고 해당 변경사항을 적용합니다.

 이 과정을 통해 개발자는 HTML 파일에 변경사항을 적용할 때마다 전체 서버를 재시작할 필요 없이, 수정된 부분만을 빠르게 확인할 수 있게 됩니다. 이는 개발 과정을 훨씬 더 효율적으로 만들어 줍니다.

 

3. 주의사항

1. 자동 재시작 설정 조정: 자동 재시작은 때때로 개발 흐름을 방해할 수 있습니다. 이 기능을 끄거나 조정하고 싶다면, application.properties 또는 application.yml 파일에 설정을 추가하여 재시작 옵션을 커스터마이즈할 수 있습니다.

    1-1. 설정 방법

         1-1-1. application.properties

# 자동 재시작 비활성화
spring.devtools.restart.enabled=false

# 재시작 트리거가 되는 폴더 지정
spring.devtools.restart.additional-paths=src/main/java

# 재시작 제외 폴더 설정
spring.devtools.restart.exclude=static/**,public/**

 

         1-1-2. application.yml

spring:
  devtools:
    restart:
      enabled: false # 자동 재시작 비활성화
      additional-paths: # 재시작 트리거가 되는 폴더 지정
        - src/main/java
      exclude: # 재시작 제외 폴더 설정
        - static/**
        - public/**

 

둘중 편한거 사용하시면 됩니다.

2. 운영 환경 배포: spring-boot-devtools는 개발 편의성을 목적으로 하므로, 실제 운영 환경에는 포함되지 않도록 주의해야 합니다. Gradle이나 Maven을 사용하는 경우, 빌드 구성에서 개발 도구를 제외하는 설정을 적용할 수 있습니다.

3. 성능 영향: 자동 재시작과 리로딩 기능은 개발 중에는 편리하지만, 애플리케이션의 시작 시간이나 실행 시간에 영향을 줄 수 있습니다. 이는 특히 큰 프로젝트에서 더욱 두드러질 수 있으므로, 필요에 따라 사용을 조절하는 것이 좋습니다.

4. LiveReload 플러그인: spring-boot-devtools는 브라우저에서 페이지를 자동으로 새로고침하는 LiveReload 기능을 지원합니다. 개발 중인 애플리케이션의 뷰를 실시간으로 업데이트하려면, 브라우저에 LiveReload 확장 프로그램을 설치해야 합니다.