본문 바로가기

Backend/Spring

Spring Boot 재시작 없이 반영 (DevTools)

클래스 파일을 수정하고 테스트하려면 서버를 수동으로 재시작해주어야 하는 번거로움이 있어요.

사실, 효율적으로 테스트를 하기 위해서는 Junit과 같은 테스트 프레임워크를 사용하는 것이 가장 좋습니다만, 그렇지 않은 상황도 존재할 수 있죠.

그런 경우에 시간을 절약하기 위해 클래스 파일이 수정되었을 때 자동으로 리로드시키는 기능을 추가해볼게요.

사실은 재시작 없이가 아니라 자동 리로드라고 보셔야 하구요.

 

Spring Boot 버전은 2.1.8에서 진행했습니다.

 

Gradle

build.gradle에 아래 코드 추가하고, Refresh Gradle Project

 

configurations {
	developmentOnly
	runtimeClasspath {
		extendsFrom developmentOnly
	}
}

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

Maven

pom.xml에 아래 코드 추가하고, Update Project

 

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<scope>runtime</scope>
		<optional>true</optional>
	</dependency>
</dependencies>

 

스프링 부트 프로젝트 생성 시에 DevTools를 추가하여 자동으로 설정할 수도 있어요.

 

DevTools 관련 설정

application.yml에서 devtools 관련 설정을 지원하니 우리는 값만 넣어주면 됩니다.

 

 

springloaded로 JVM을 리로드하는 방법도 있지만, 2017년 이후로는 라이브러리가 업데이트되지 않고 있으니 스킵!