Spring

Spring Boot Devtools의 간략한 설명

비뀨_ 2022. 3. 23. 01:55

DevTools이 무엇인가?

Dev(Development : 개발) + Tools(도구들)

뜻에서 알 수 있듯이, 개발자가 개발할 때 편리한 도구들을 제공해 준다.

 

1. 코드가 변경될 때 자동으로 애플리케이션을 다시 시작한다.

Devtools를 사용할 때, 애플리케이션은 JVM에서 두개의 클래스 로더에 의해 로드된다.

한 개의 클래스 로더는 자주 변경되지 않는 의존성 라이브러리와 함께

나머지(B)는 Java 소스 코드, 속성 파일, 프로젝트의 src/main/ 경로에 있는 모든 것과 로드된다.

 

변경이 감지 될 때 B만 다시 로드하고, Spring Application Context를 다시 시작시킨다.

 

B만 로드하기 때문에 조금이나마 시간을 단축시켜주지만,

의존성 라이브러리가 변경된다면 애플리케이션을 껐다 켜야한다.

 

2. 자동으로 브라우저를 새로고침하고 템플릿 캐시 비활성화

Thymeleaf 같은 템플릿은 Parsing(분석) 결과를 캐시에 저장하고 사용하도록 한다.

※ 캐시를 쓰는 이유는 같은 요청일 때 다시 분석을 요청하지 않게 해 효율성을 높일 수 있기 때문

하지만 개발시에는 템플릿 코드가 변경되고, 새로고침을 해도 변경 전의 템플릿이 사용중이기 때문에 

변경된 결과를 볼 수 없게 되고, 애플리케이션을 껐다가 켜야한다.

 

DevTools는 캐시를 비활성화하게 되어 변경 후 새로고침을 할 때 변경 된 코드를 불러오게 되고,

LiveReload(실시간으로 재로드) 를 통해 자동으로 새로고침해 준다.

 

크롬에 깔기

https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei/related?hl=ko 

 

LiveReload

Provides Chrome browser integration for the official LiveReload apps (Mac & Windows) and third-parties like guard-livereload and…

chrome.google.com

 

3. H2 DB가 사용 중이면 자동으로 H2 콘솔을 활성화시킨다.

H2(RDBMS 종류)를 사용한다면 H2콘솔도 DevTolls가 자동으로 활성화시킴.