[Spring] Spring Boot DevTools - 자동 컴파일, 업데이트
spring-boot-devtools 라이브러리는 프로젝트를 빌드할 때 상당히 유용한 라이브러리이다.
제공해 주는 기능들이 다 알차기 때문인데, 나열하면
- Property defaults
- Automatic restart
- LiveReload
- Global settings
- Remote applications
이 기능들 중 우선적으로 알아야 할 기능은 automatic restart, livereload 이 두 기능이다.
automatic restart는 컴파일 중인 프로젝트 내부의 파일 내용을 수정하고 저장했을 때 직접 recompile을 할 필요 없게 자동으로 해주는 기능이며, livereload는 컴파일된 페이지의 새로고침 기능을 대신해주는 기능이다.
Devtools 라이브러리 설치
이 두기능을 사용하기 위해서는 devtools 라이브러리를 dependencies에 추가해주면 된다.
dependencies {
developmentOnly 'org.springframework.boot:spring-boot-devtools'
}
위의 developmentOnly는 종속성 블록으로 그 종류에는implementation, compileOnly, developmentOnly가 있다.
- developmentOnly: 개발 시간에만 필요하며, 애플리케이션을 빌드할 때는 포함되지 않는다.
- compileOnly: 컴파일 시에만 필요하며, 런타임에는 포함되지 않는다.
- implementation: 컴파일과 런타임 모두에 필요하며, 개발자 도구를 애플리케이션에 포함시킨다.
이렇게 선언 해준 후에, intellij 기준 환경설정-빌드, 실행, 배포-컴파일러에서
에 체크를 해주고, 고급설정-컴파일러에서
이 두 항목에 체크를 해준 후, intellij을 재실행 후, 프로젝트를 다시 build 해주면 devtools는 사용 가능한 상태가 된다.
여기까지 해준다면, automatic restart 기능까진 구현된 것이다.
livereload 기능 설치
이후 livereload 기능은 크롬 확장 프로그램에서 livereload을 설치, 권한 부여 후 체크표시를 해준다면
3~4초마다 프로젝트의 변경사항이 웹페이지에 자동으로 반영되게 해주는 기능도 작동하게 된다.
Property defaults
이 기능은 여러 라이브러리에서 캐시와 같은 옵션을 설정하는 데 도움을 준다.
예를 들어, Thymeleaf 템플릿 엔진은 spring.thymeleaf.cache 와 같은 형식으로 캐시 설정을 지원하는데, 이를 false로 하여 옵션을 비활성화할 수 있다.
이러한 기능이 필요한 이유는 일반적으로 캐시는 애플리케이션의 성능을 향상하지만, 개발 중에는 코드 변경이 빈번하게 발생할 수 있기 때문이다. 캐시를 비활성화하지 않으면 변경된 사항이 즉시 반영되지 않고, 반복적으로 캐시를 클리어하거나 애플리케이션을 다시 시작해야 할 수 있기에 생산성 등을 향상하기 위하여 캐시를 비활성화하는 것이 좋다.
Global settings
자신의 컴퓨터에 설치된 모든 Spring Boot 애플리케이션에 적용할 수 있는 설정이며, .spring-boot-devtools.properties 파일을 사용하여 구성된다.
예를 들면, .spring-boot-devtools.properties 에
spring.devtools.livereload.enabled=false
와 같이 입력해 준다면, 모든 어플리케이션에 대하여 livereload가 비활성화된다.
Remote applications
이 기능은 원격 어플리케이션에서도 spring boot 개발도구를 사용가능하게 하는 기능이라고 한다.
원격 서버에 Spring Boot 애플리케이션을 배포하고 해당 서버에서 애플리케이션을 실행해야 기능을 사용할 수 있으며, 로컬 개발 환경에서 원격 애플리케이션을 관찰하고 변경 사항을 실시간으로 반영 할 수 있다고 한다.
Remote applications 기능을 사용하려면 spring.devtools.remote.secret와 같은 속성을 설정하면 된다고 한다.
요약
spring-boot-devtools 설치 방법
livereload, automatic restart, property defaults 에 대한 설명