====== SpringBoot DevTools ====== * [[springframework:springboot|SpringBoot]] DevTools * [[https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html|20. Developer Tools]] ===== 설치 ===== // configurations 는 일단 안해도 되는벗(springboot version따라?) configurations { developmentOnly runtimeClasspath { extendsFrom developmentOnly } } dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") } * ''java -jar''로 실행될 때는 운영 시스템으로 간주하고 devtools가 비활성화 된다. * 단, System Property ''-Dspring.devtools.restart.enabled=true|false'' 로 제어 가능하다. ===== 코드 변경 자동 반영 ===== * Java Code 가 변경되고 **빌드가 실행돼서 클래스패스의 리소스 변경이 감지되면** SpringBoot 애플리케이션을 자동 재시작해준다. * [[https://www.jrebel.com/products/jrebel|jrebel]] 처럼 특정 클래스만 재적재해주는 방식은 아니므로 다소 느리다. * 코드 빌드가 명시적으로 발생해야 하므로 [[:intellij_idea|IntelliJ IDEA]] 처럼 기본적으로 자동 빌드를 하지 않는 IDE 에서는 명시적 빌드를 해줘야 한다. * 단, [[:intellij_idea|IntelliJ IDEA]] 에도 자동 빌드 기능이 있긴 하지만, 권장하고 싶지 않음. 여러 코드를 변경해야 할 경우 원하는 코드 변경을 모두 다 한 뒤에 reload가 돼야 하는데, 코드 변경을 하고 있는 도중에 빌드가 발생하게 되면 개발이 오히려 느려질 수 있어서 명시적 빌드를 선호하는 편이다. * [[intellij_idea:config|IntelliJ IDEA Config 설정]] 에서 자동 빌드 부분 참조. * [[https://www.jetbrains.com/help/idea/spring-boot.html#application-update-policies|Spring Boot—IntelliJ IDEA]] * 애플리케이션이 실행중인 상황에서 코드 변경 반영 정책(애플리케이션 단위) : **Run | Edit Configurations.** -> Spring Boot 애플리케이션 선택 -> **Running Application Update Policies, -> 'Update'** 에서 원하는 Update 방식 선택. ==== reload trigger ==== * 사용중인 IDE가 지나치게 자동 갱신을 해서 오히려 더 개발 속도를 떨어뜨린다면 ''classpath'' 상의 특정 파일이 갱신될 때만 변경 사항을 자동 반영하게 할 수 있다. * 아래와 같이 설정했다면, ''src/main/resources/.reloadtrigger'' 파일이 변경 될 때만 애플리케이션이 자동 재시작된다. 'spring.devtools.restart.trigger-file=.reloadtrigger ==== 개발 환경에서는 Template Engine의 cache 를 끌 것 ==== * 개발 환경에서는 변경을 빠르게 확인하는게 더 중요하므로 [[java:template_engine|Java HTML Template Engines]]의 cache 를 끈다. ===== Local 환경 개발자 전용 전역 설정 Override ===== * ''$HOME/.config/spring-boot/spring-boot-devtools.{properties|yml|yaml}'' 파일이 존재하면 자동으로 읽어 최우선 순위로 적용한다. * ''$HOME/.spring-boot-devtools.properties'' 위의 파일이 없으면 적용된다. ===== Live Reload ===== * HTML 변경 사항 발생시에 Browser 자동 reload * [[http://livereload.com/extensions/|How do I install and use the browser extensions?]] * Live Reload 서버가 뜨는 것을 막으려면 spring.devtools.livereload.enabled=false ===== 참조 ===== * [[https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html|20. Developer Tools]] * [[http://haviyj.tistory.com/11|Spring boot + devtools로 편리한 개발환경 구축]] * [[http://www.baeldung.com/spring-boot-devtools|Overview of Spring-Boot Dev Tools | Baeldung]] * [[https://dzone.com/articles/spring-boot-developer-tools-and-live-reload|Spring Boot Developer Tools and LiveReload - DZone Java]] * [[http://www.javabeat.net/spring-boot-devtools/|Ultimate guide to SpringBoot devtools]] * [[https://www.vojtechruzicka.com/spring-boot-devtools/|Faster Development with Spring Boot DevTools | Vojtech Ruzicka's Programming Blog]]