부트 개념과 활용-14.Spring-Boot-Devtools
Spring-Boot-Devtools
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
해당 의존성을 추가해주면 (Spring-Boot-Devtools 추가)
- 캐시 설정을 개발 환경에 맞게 변경.
타임리프, 프리마커, 그루비 등 캐시를 다 끄고, 세션 퍼시스턴스 true로 변경하고, h2 콘솔을 켜고 등…
대부분 캐시 끄는 것..
캐시가 적용되어 있으면, 바꾼 것들이 바로 반영이 안되니까 캐시에 관련된 설정을 개발 환경에 맞게 꺼 준다. - 클래스패스에 있는 파일이 변경 될 때마다 자동으로 재시작.(리스타트 기능)
- 직접 껐다 켜는거 (cold starts)보다 빠른다. 왜?
스프링 부트는 클래스로더를 2개 사용. 하나는 베이스 클래스 로더.(우리가 잘 바꾸지 않는 의존성을 읽어들이는) 하나는 리스타터 클래스 로더 (애플리케이션을 읽어들이는)
- 릴로딩 보다는 느리다. (JRebel 같은건 아님)
- 리스타트 하고 싶지 않은 리소스는? spring.devtools.restart.exclude
- 리스타트 기능 끄려면? spring.devtools.restart.enabled = false
- 직접 껐다 켜는거 (cold starts)보다 빠른다. 왜?
- 라이브 릴로드? 리스타트 했을 때 브라우저 자동 리프레시 하는 기능
- 브라우저 플러그인 설치해야 함.
- 라이브 릴로드 서버 끄려면? spring.devtools.liveload.enabled = false
하지만 실패 확룔이 있어서 (제대로 빌드 안됨. 그 시간 고려하면 안 쓰는게 더 빠를수도.. 5번중 3번 빌드 실패하는것 확인..)
- 글로벌 설정
- ~/.spring-boot-devtools.properties (1순위 외부설정 파일의 위치 - 이 플러그인이 존재하면(Devtools))
- 리모트 애플리케이션
- 운영환경에서 권장하지 않음. 다른 컴퓨터에 원격으로 돌리거나, 파일을 반영하거나 등 가능하나.. 설정 복잡 및 개발 환경에서 사용할 필요가..