Spring Boot DevTools가 하는 일

Hansu Park·2023년 11월 24일

도입

멋도 모르고 버그 해결하기 위해 devtools 의존성을 추가했었다. 하지만 리뷰어의 날카로운 피드백에 내가 모른다는 사실이 들통나고 말았다..

따라서 스프링부트 의존성인 devtools에 대해 공식문서를 참고하여 정리해보고자 한다.

소개

devtools는 더 나은 스프링 부트 개발환경 경험을 위해 존재하는 의존성 모듈이다. 개발자 편의성을 위한 기능들을 제공한다.

Property defaults (캐시 방지)

스프링부트에서는 템플릿엔진같이, 성능을 위해 몇몇 데이터들을 캐싱하여 사용한다. 프로덕션 환경에서는 이러한 성능효과를 누릴 수 있지만, 개발 환경에서는 변경사항이 반영되지 않는 캐시 데이터로 인해 불편함을 얻을 수 있다. 따라서, devtools에서는 이러한 캐시를 방지하는 설정값(application.properties)을 기본으로 꺼놓는다.

 Automatic restart

classpth 경로에 있는 파일이 변경되면 어플리케이션을 재시작한다. 개발환경에서 유용하다. spring.devtools.restart.additional-paths를 통해 다른 경로의 파일도 변경감지를 할 수 있다.spring.devtools.restart.exclude를 통해 재시작의 범위를 제어할 수 있다.

  • base classloader: 라이브러리와 같이 변경되지 않은 클래스들을 로드함.
  • restart classloader: 개발중인 클래스와 같이 변경되는 클래스들을 로드함.
  • restartcold start(초기 시작)과 달리 restart classloader만을 다시 로드하기에 속도가 빠르다. 충분히 빠르지 않다면 리로딩 기술을 고려하는 것이 좋다.

LiveReload

리소스가 바뀐 경우 브라우저의 새로고침을 실시한다.

Global settings

~/.spring-boot-devtools.properties. 경로를 통해 모든 devtools 프로젝트에 적용되는 공통 설정을 추가할 수 있다.

Remote applications

환경 설정을 통해 원격에 있는 서버를 열거나 디버깅, classpath의 변경사항을 감지하고 처리할 수 있다. (도커와 같은 환경을 대상으로도 가능하다.)

참고: 20. Developer tools

0개의 댓글