오늘 김영한님의 Spring Boot 입문 강의를 듣기 시작했다. 굉장히 기본 세팅을 하고, static index 페이지를 잡아주고, 템플릿 엔진으로 동적으로 움직이는 페이지를 하나 만들었다. 그런데 영한님께서 계속 프로젝트를 껐다 켜야한다고 하셨다. 기존에 React의 Hot Reload에 길들여져버린 나에게 굉장히 불편하게 느껴졌다.
영한님께서 강의 노트에 spring-boot-devtools
라이브러리를 추가하면 서버 재시작 없이 변경사항을 적용할 수 있다고 하셔서 바로 검색해 보았다.
node에서 package.json
이 있듯, Spring Boot에서는 대개 Gradle 이라는 빌드 관리 시스템을 사용한다. Spring Boot 프로젝트 최상단에 있는 build.gradle
에 dependencies
부분을 다음과 같이 수정한다.
dependencies { *// ... 기존 디펜던시들// 아래 녀석을 추가해주자!*developmentOnly("org.springframework.boot:spring-boot-devtools") }
IntelliJ를 사용하면 해당 파일에 수정을 가하자 마자 Gradle Changes를 적용할 수 있는 버튼이 나타난다.
눈에 띄면 바로 클릭하면 되고, 아니면 Ctrl + Shift + O
를 통해서 Gradle의 변경 사항을 적용해줄 수 있다.
이제 IntelliJ의 설정을 잡아주어야 한다. 확실히 node 생태계와 조금 다르게 IDE와 프레임워크, 언어가 유기적으로 붙어서 움직인다는 느낌이 들었다. (그리고 VSCode로 Spring Boot 개발을 하면 정말 많은 Configuration을 해야 할 것 같다는 느낌도 들었다)
Build, Execution, Deployment - Compiler
로 가보자. (Build, Execution, Deployment
는 펼치기 화살표, Compiler
는 그냥 클릭)Build Project automatically
가 있다. 이 녀석이 아마 체크 해제 되어있을 텐데, 체크 해주자.Advanced Settings
가 있다. 그 곳으로 가보자.Allow auto-make to start even if developed application is currently running
이 있다. 이 녀석도 체크 해제 되어있을 텐데, 체크 해주자.(고급 설정 → 개발된 애플리케이션이 현재 실행 중인 경우에도 auto-make가 시작되도록 허용 체크)그리고 이 상태로 Spring Boot에서 사용하는 controller 등의 코드를 변경하면 조금 기다리면 알아서 재시작이 된다.
근데… 갑갑하다! node로 개발할 때는 저장 누르는 순간 휘리릭~ 뿅! 재시작이 됐는데, Spring은 약간의 딜레이가 걸린다. 이럴 바에는 그냥 Shift + F10
을 입력해서 프로젝트를 아예 재시작하는게 빠르겠다는 생각이 들 정도이다. 구글링을 통해 다음의 글을 발견했다.