스프링부트, spring-boot-devtools

스프링부트에서 소스코드 수정시 자동으로 서버를 재시작 하는 기능등을 제공한다.
maven dependencies
<dependencies>
 <dependency>
  <groupid>org.springframework.boot</groupid>
   <artifactid>spring-boot-devtools</artifactid>
   <optional>true</optional>
  </dependency>
</dependencies>

자동 restart

  • classpath가 변경되면 어플리케이션이 자동으로 restart
  • ide마다 차이가 좀 있는데 eclipse는 저장시에 classpath 변경이 발생하지만, intellij는 build project 기능을 통해 진행된다.

Restart vs Reload

  • spring boot는 2개의 classloader를 사용
  • Base classloader : 변하지 않는 3rd party용 .jar파일같은
  • Restart classloader : 개발자가 직접 작성하는 클래스 같은
  • Restart 실행시에 base classloader가 미리 작업한 부분은 할필요하고 없으므로 효율적임
  • 만약 restart 가 충분히 빠르지 못하게 작동한다면 JRebel의 reloading을 고려

Excluding Resources

  • /META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates
  • 이곳 폴더들은 변경이 일어나도 restart가 발생하지 않음
 spring.devtools.restart.exclude=static/**,public/**
  • 이런식으로 추가로 설정가능

Watching Additional Paths

  • 반대로 classpath에 없는 파일 변경시에 restart를 원한다면
  • spring.devtools.restart.additional-paths 을 통해 등록할 수 있다.

LiveReload

  • chrome, firefox, safari 에서는 브라우저 플러그인(http://livereload.com/)을 활용하면 브라우저가 자동으로 갱신되는 효과를 얻을 수 있다.

참고 https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-devtools

댓글

이 블로그의 인기 게시물

[spring] log4j 설정 및 사용법

[linux] 백그라운드 작업 nohup [xxx.sh] &

[spring] 인터셉터 와 필터