Spring Boot DevTools가 하는 일

Hansu Park·2023년 11월 24일
0

도입

멋도 모르고 버그 해결하기 위해 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개의 댓글