사용자 도구

사이트 도구


springframework:springboot:devtools

SpringBoot DevTools

설치

// 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 애플리케이션을 자동 재시작해준다.
  • jrebel 처럼 특정 클래스만 재적재해주는 방식은 아니므로 다소 느리다.
  • 코드 빌드가 명시적으로 발생해야 하므로 IntelliJ IDEA 처럼 기본적으로 자동 빌드를 하지 않는 IDE 에서는 명시적 빌드를 해줘야 한다.
  • 단, IntelliJ IDEA 에도 자동 빌드 기능이 있긴 하지만, 권장하고 싶지 않음. 여러 코드를 변경해야 할 경우 원하는 코드 변경을 모두 다 한 뒤에 reload가 돼야 하는데, 코드 변경을 하고 있는 도중에 빌드가 발생하게 되면 개발이 오히려 느려질 수 있어서 명시적 빌드를 선호하는 편이다.
    • 애플리케이션이 실행중인 상황에서 코드 변경 반영 정책(애플리케이션 단위) : 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 를 끌 것

Local 환경 개발자 전용 전역 설정 Override

  • $HOME/.config/spring-boot/spring-boot-devtools.{properties|yml|yaml} 파일이 존재하면 자동으로 읽어 최우선 순위로 적용한다.
  • $HOME/.spring-boot-devtools.properties 위의 파일이 없으면 적용된다.

Live Reload

spring.devtools.livereload.enabled=false

참조

springframework/springboot/devtools.txt · 마지막으로 수정됨: 2021/02/14 15:27 저자 kwon37xi