[SpringBoot] IntelliJ 에서 스프링부트 DevTools 사용법과 실행원리

DevTools는 코드가 변경될 때 자동으로 애플리케이션을 다시 시작시킨다. 즉, 소스를 변경할때 마다 프로젝트를 중지시키고 다시 시작 시킬 필요가 없다는 뜻이다.

 

인텔리제이(IntelliJ) 에서 사용방법

DevTools를 처음 스프링부트 프로젝트를 만들면서의존성을 지정할때 Spring Boot DevTools를 선택하면 아래처럼 pom.xml파일의 <dependency> 요소에 지정되어 있다.

 

Preferences - Advanced Settings - Compiler에서 Allow auto-make to start even if developed application is currently running을 체크해준다.

 

Perference에서 Compiler를 검색후 Compiler 설정창에서 Build project automatically 체크

위 설정을 완료하면 소스를 변경하고 애플리케이션을 수동으로 재시작할 필요없이 자동으로 재시작이 된다.

 

실행원리

DevTools를 사용 중일때 애플리케이션은 JVM에서 두 개의 클래스 로더에 의해 로드 된다. 그 중 하나는 src/main/ 경로에 있는 모든 것과 함께 로드되고 다른 하나는 자주변경되지 않는 의존성 라이브러리와 함께 로드 된다. 이 말은 소스를 변경하면 src/main/경로에 있는 소스들이 전부 로드가 된다는 뜻이고 의존성 라이브러리는 로드가 되지 않으므로 리로드 시간이 단축이 되고 의존성을 추가 했다면 수동으로 애플리케이션을 재시작 해야된다는 것이다.

 

그리고 DevTools는 템플릿 캐시를 비활성화 할수 있다. 기본적으로 Thymeleaf와 FreeMarket과 같은 템플릿에서는 템플릿의 파싱 결과를 캐시에 저장하고 사용된다. 그러면 소스를 변경하더라도 캐시에서 데이터를 가져오기 때문에 변경 결과가 화면에 즉각적으로 안나올수 있다. 운영서버에서는 이것이 속도면에서 장점이 되지만, 개발할때는 바로바로 변경 결과를 봐야 하기 때문에 유용하지 않을 수 있다.

DevTools는 템플릿 캐시를 비활성화 하여 브라우저를 새로고침 하면 변경된 템플릿이 적용된다.

 

 

참고 : 스프링 인 액션 http://www.yes24.com/Product/Goods/90180239

댓글

Designed by JB FACTORY