Develop/Spring Boot
15. devtools
자라선
2020. 7. 27. 16:28
스프링 부트에서 제공하는 optional한 툴
프로젝트의 캐시 설정을 개발환경에 맞춰 변경할 수 있는 의존성 라이브러리
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
의존성을 정의하면 아래 링크에 나오는 프로퍼티 설정이 적용되며 이러한 spring-boot-devtools.properties 는 최우선 적용되는 설정이다.
Auto Reload
프로젝트 빌드 후 톰캣 서버를 올리고 코드 수정이 일어날경우 이를 반영하기 위해서는 서버를 재시작해주어야 한다. 하지만 의존성을 정의한다면 이를 자동 재시작을 하여 바로 코드가 반영된다.
코드 수정 후 [ build/build project] 로 빌드 한다면 자동 재시작 된다.
devtools 와 JRebel 라이브러리는 비슷한것 같지만 내부적으로 서로 다른 성능을 가지고 있으며 실질적으로 devtools가 더 빠르게 재시작 된며 그 이유는
devtools는 2개의 classloader를 가지고 있으며 첫 프로젝트 시작시 base Classloader에 로드 되며 코드 변경시 빌드 한다면 restart Classloader에 로드되며 또 다시 코드가 수정된다면 restart Classloader는 삭제되고 새로운 Classloader가 생성되어 로드를 한다.
서버가 리로드시 브라우저 또한 자동 새로고침 하게 해줄 수 있는데 이경우 Live Reload Plugin를 브라우저에서 설치 해주어야 한다.