Spring Boot Devtools 설정하기(for 편한 개발)

개발자·2021년 12월 4일
6
post-thumbnail

Spring Boot Devtools는 애플리케이션 개발 시 유용한 기능들을 제공하는 모듈이다. 해당 모듈을 이용하면 개발 생산성을 향상시키는 데 도움을 줄 수 있다. Spring Boot Devtools에서 제공하는 대표적인 기능 몇 가지를 소개하고자 한다.

Spring Boot Devtools에서 제공하는 대표적인 기능

  • Automatic Restart : claapath에 있는 파일이 변경될 때마다 애플리케이션을 자동으로 재시작해준다. 개발자가 소스 수정 후 애플리케이션을 재실행하는 과정을 줄일 수 있으므로 생산성을 향상시킬 수 있다.
  • Live Reload : 정적 자원(html, css, js) 수정 시 새로고침 없이 바로 적용할 수 있다.
  • Property Defaults : Thymeleaf는 기본적으로 성능을 향상시키기 위해서 캐싱 기능을 사용한다. 하지만 개발하는 과정에서 캐싱 기능을 사용한다면 수정한 소스가 제대로 반영되지 않을 수 있기 때문에 cache의 기본값을 false로 설정할 수 있다.

위의 기능을 추가하려면 pom.xml에 spring-boot-devtools 의존성 추가 후 "Relaod All Maven Projects"를 클릭하여 의존성을 받아와야 한다.

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
</dependency>

Automatic Restart 적용하기

<2021년 2월 이전>

인텔리제이에서 키를 연속으로 2번 누르면 모든 항목을 검색할 수 있는 검색창이 나온다. Actions 탭에서 "registry"를 검색하여 선택하고, compiler.automake.allow.when.app.running을 찾아 체크해준다. 애플리케이션이 실행 도중 이어도 자동으로 재실행할 수 있도록 허락하는 것이다.

다음으로 소스를 수정할 때 자동으로 빌드가 되도록 설정해야 한다.

[File] - [Settings] - [Build] - [Complier]에서 "Build project automatically"에 체크 후 OK를 눌러준다.

<2021년 2월 이후>

2021년 2월 이전 방법으로 했는데 compiler.automake.allow.when.app.running가 보이지 않아서 구글링 하던 도중 찾아낸 방법이다.

Windows 사용자 기준 Settings, Mac OS 사용자 기준 Preferences에서 최하단에 있는 Advanced Settings에서 "Allow auto-make to stat even if developed application is currently running"을 체크 후 위와 같이 소스를 수정할 때 자동으로 빌드가 되도록 설정해야 하기 때문에 동일하게 [File] - [Settings] - [Build] - [Complier]에서 "Build project automatically"에 체크 후 OK를 눌러준다.

이렇게 설정을 끝내고 애플리케이션 실행 후 자바 소스코드를 수정하면 자동으로 애플리케이션이 재시작되는 것을 확인할 수 있다.

Live Reload 적용하기

spring-boot-devtools를 Live Reload를 적용하면 개발자가 직접 브라우저의 새로고침을 하지 않아도 변경된 리소스가 웹 브라우저에 반영된다.

Chrome 웹 스토어에서 LiveReload를 검색해 설치하고, application.propertiles에 다음 코드를 작성하도록 하자.

#Live Reload 기능 활성화
spring.devtools.livereload.enabled=true
spring.resources.static-locations=file:src/main/resources/static/
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=file:src/main/resources/templates/

이후 크롬 확장 프로그램에서 LiveReload 옆의 점 세개 버튼을 눌러 '사이트 액세스(이 확장 프로그램이 내가 방문하는 다음 웹 사이트의 모든 데이터를 읽고 변경하도록 허용합니다.'를 모든 사이트에서로 변경해준다.

html 파일을 수정하고 Build Project 또는 변경될 파일을 열고 Recompile을 하면 애플리케이션 재구동 없이 html 같은 변경된 리소스 반영이 가능하다. 빌드가 완료되면 변경된 내용이 웹 브라우저에 반영되는 것을 확인할 수 있다.

Property Defaults 적용하기

Thymeleaf의 캐싱 기능을 false로 설정하겠다. 실제로 적용할 때는 운영환경과 개발 환경의 application.properties 분리 후 운영환경에서는 캐싱 기능을 사용하고, 개발환경에서는 캐싱 기능을 꺼두는 방법으로 관리하면 된다.

#Thymeleaf cache 사용 중지
spring.thymeleaf.cache = false

이번 포스팅에서는 뷰 개발을 좀 더 쉽게 할 수 있도록 spring-boot-devtools 설정을 해봤다.

해당 게시글은 변구훈, 『스프링 부트 쇼핑몰 프로젝트 with JPA』, 로드북, 2021를 참고하여 작성하였습니다.

profile
I DEVELOP THEREFORE, I AM 😄

1개의 댓글

comment-user-thumbnail
2023년 6월 4일

덕분에 좋은 내용 잘 보고 갑니다.
정말 감사합니다.

답글 달기