멋도 모르고 버그 해결하기 위해 devtools
의존성을 추가했었다. 하지만 리뷰어의 날카로운 피드백에 내가 모른다는 사실이 들통나고 말았다..
따라서 스프링부트 의존성인 devtools
에 대해 공식문서를 참고하여 정리해보고자 한다.
devtools
는 더 나은 스프링 부트 개발환경 경험을 위해 존재하는 의존성 모듈이다. 개발자 편의성을 위한 기능들을 제공한다.
스프링부트에서는 템플릿엔진같이, 성능을 위해 몇몇 데이터들을 캐싱하여 사용한다. 프로덕션 환경에서는 이러한 성능효과를 누릴 수 있지만, 개발 환경에서는 변경사항이 반영되지 않는 캐시 데이터로 인해 불편함을 얻을 수 있다. 따라서, devtools
에서는 이러한 캐시를 방지하는 설정값(application.properties
)을 기본으로 꺼놓는다.
classpth 경로에 있는 파일이 변경되면 어플리케이션을 재시작한다. 개발환경에서 유용하다. spring.devtools.restart.additional-paths
를 통해 다른 경로의 파일도 변경감지를 할 수 있다.spring.devtools.restart.exclude
를 통해 재시작의 범위를 제어할 수 있다.
restart
는 cold start
(초기 시작)과 달리 restart classloader만을 다시 로드하기에 속도가 빠르다. 충분히 빠르지 않다면 리로딩 기술을 고려하는 것이 좋다.리소스가 바뀐 경우 브라우저의 새로고침을 실시한다.
~/.spring-boot-devtools.properties.
경로를 통해 모든 devtools
프로젝트에 적용되는 공통 설정을 추가할 수 있다.
환경 설정을 통해 원격에 있는 서버를 열거나 디버깅, classpath
의 변경사항을 감지하고 처리할 수 있다. (도커와 같은 환경을 대상으로도 가능하다.)