본문 바로가기
Back-End/Spring

Spring boot + devtools로 편리한 개발환경 구축

by Havi 2016. 12. 14.

Java Application 개발시 소스가 변할때 마다 서버를 재가동시키고 일일이 버튼을 누르는 일이 매우 귀찮았습니다.(저만 그런가...?) 이러한 비생산적인 요소를 줄이기 위해 이리저리 찾아보다 devtools에 대해 알게되었고 한국어로된 문서를 좋아하시는 분들을 위해 작성해 봅니다. 해당 글은 document문서를 요약하고 Intellij에서 빠른 환경구축을 할 수 있게끔 작성하였습니다.

Point: 모든 소스는 guithub에서 보실 수 있습니다.

특징

Property Defaults

devtools는 thymeleaf, Freemarker, Groovy Templates, Velocity, Mustache 등 다양한 템플릿에 대한 개발 캐싱을 모두 자동 비활성화 처리하였습니다.

Point: 기존에 사용되어진 비슷한 tool로 Spring Loaded도 있지만 devtools는 보다 편리한 환경세팅 제공합니다.

Automatic Restart

어떠한 classpath 파일이 변경되면 자동으로 응용 프로그램이 다시 시작됩니다.

LiveReload

  • LiveReload는 소스에 변화가 있을 때 application이 자동으로 브라우저 새로 고침을 트리거 할 수 있게 해주는 프로토콜입니다.
  • livereload.com에서 Chrome, Firefox, Safari용 플러그인을 설치하여 사용할 수 있습니다.(npm의 hot-reload-server처럼 새로고침없이 바로 갱신됩니다.)

간단 설정

1.build.gradle파일에 devtools dependency를 추가해 줍니다.


2.intellij에서 Action을 찾는 단축키인 ctrl+shift+A로 registry를 검색합니다.


3.compiler.automake.allow.when.app.running을 체크해 줍니다.


4.Settings -> Build -> Compiler에서 Build project automatically를 체크해 줍니다.


Property Setting

기본 default설정이 되어 있지만 커스텀하게 설정을 바꾸고 싶으면 방법은 다음 두가지 방법이 있습니다.

application.yml 설정


서버코드 main class 설정


추가팁

livereload기능을 사용하기 위해선 Chrome, Firefox, Safari용 플러그인을 각각 사용하시는 브라우저에 추가해 주어야 합니다. 크롬의 경우를 예를 들어 설명하겠습니다.

chrome livereload plugin 다운


livereload 기능 on!


devtools 설정이 모두 완료되었습니다. 새로고침없이 자동 reload!! 

댓글4

  • Favicon of https://lhb0517.tistory.com BlogIcon Mr.star 2017.09.06 16:34 신고

    감사합니다.

    main class 에서 spring.devtools.restart.enabled : false 로 설정되어있는 스크린샷 때문에 조금 헷갈렸지만 해당 옵션을 기본값인 true로 설정하고 테스트 해보니 잘 되네요!
    그리고 스프링 부트 애플리케이션을 실행할 땐 gradle의 task인 bootRun으로 실행하면 안 되고, 메인 클래스의 메인 메소드를 실행시켜야 하는 점 때문에 좀 애를 먹었었습니다. (다른 분들 보시면 참고하세용.)

    감사합니다.

    답글

  • 자바덕 2020.01.07 15:48

    주인장님 정말 잘 배워서 갑니다.
    너무 감사합니다. 개발 시간을 많이 절약 할 수 있네요.

    답글