반응형

Developer Tools

devtools는, Spring Boot에서 개발 편의를 위해 제공하는 라이브러리이다.

개발과정에서, 코드를 수정했을 때, 브라우저에서 수정 내용을 확인하려면,
웹어플리케이션을 재시작해야한다.

코드는 수정했는데, 브라우저에 자동으로 적용되지 않아서, 이로인한 불편한점이 있는데,
devtools를 이용해서 이러한 불편한 점을 해결할 수 있다.

 

devtools 에서 제공하는 기능은 크게 6가지 정도가 있다.

 

  • Diagnosing Classloading Issues (클래스 로딩 문제 진단)
  • Property Defaults (속성 기본값)
  • Automatic Restart (자동 재시작)
  • LiveReload (라이브 리로드)
  • Global Settings (전역 설정)
  • Remote Applications (원격 애플리케이션)

 

[Gradle 사용하는 경우]

spring-boot-devtools 을 사용하려면,
아래에 표시된 대로 build.gradle에 dependencies를 추가해줘야 한다. 

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

 

 

Property Defaults (속성 기본값)

Spring Boot에서 지원하는 여러 라이브러리는 캐시를 사용하여 성능을 향상시킨다.
예를 들어, 템플릿 엔진은 템플릿 파일을 반복적으로 구문 분석하지 않도록 컴파일된 템플릿을 캐시한다.
또한, SpringMVC는 정적 리소스를 제공할 때 응답에 HTTP캐싱 헤더를 추가할 수 있다.

캐싱은 프로덕션에서는 매우 유용하지만, 개발 중에는 비생산적이어서 애플리케이션에서 방금 변경한 내용을 볼 수 없다.
이러한 이유로 spring-boot-devtools는 기본적으로 캐싱 옵션을 비활성화 한다.

적용되는 속성들과 기본값들은 공식 문서에서 자세히 살펴볼 수 있다.

만약, Spring MVC 애플리케이션을 개발하는 동안 web에 들어오는 수신 요청 등의 세부 정보에 대한 정보와 모든 요청 세부 정보(민감한 정보 포함)을 기록하려면 spring.mvc.log-request-details 또는 spring.codec.log-request-details 구성 속성을 켤 수 있다.

 

 

Automatic Restart (자동 재시작)

spring-boot-devtools는 클래스 경로의 파일이 변경될 때마다 자동으로 재시작해준다.
즉, 코드 변경에 대한 매우 빠른 피드백을 제공한다.
기본적으로 디렉토리를 가리키는 클래스 경로의 모든 항목은 변경 사항에 대해 모니터링 된다.
따라서 static assets 혹은 view template같은 특정 리소스는 애플리케이션을 다시 시작할 필요가 없다.

 

 

LiveReload (라이브 리로드)

spring-boot-devtools 모듈에는 리소스가 변경될 때 브라우저 새로 고침을 trigger하는데 사용할 수 있는
LiveReload 서버가 내장되어 포함된다.

사용할 때 주의할 점은, 한 번에 하나의 LiveReload 서버만 실행할 수 있다.
어플리케이션 프로그램을 시작하기 전에 LiveReload서버가 실행되고 있지 않은지 확인해야 한다.
IDE에서 여러 응용 프로그램을 시작하는 경우 첫 번쨰 응용 프로그램만 LiveReload를 지원한다.

만약, 어플리케이션이 실행될 때 LiveReload 서버를 시작하지 않으려면,
spring.devtools.livereload.enabled속성을 false로 설정할 수 있다.

 

Global Settings (전역 설정)

$HOME/.config/spring-boot디렉토리에 다음 파일 중 하나를 디렉토리에 추가하여 전역 devtools 설정을 구성할 수 있다.

  1. spring-boot-devtools.properties
  2. spring-boot-devtools.yaml
  3. spring-boot-devtools.yml

이 파일에 추가된 모든 속성은 devtools를 사용하는 시스템의 모든 Spring Boot 애플리케이션에 적용된다.
ex) 항상 트리거 파일을 사용하도록 reload를 구성하려면 spring-boot-devtools파일에 다음 속성을 추가한다.  spring.devtools.restart.trigger-file=.reloadtrigger

 

 

Remote Applications (원격 애플리케이션)

Spring Boot devtools는 로컬 개발 뿐만아니라, 어플리케이션을 원격으로 실행할 때도 여러 기능을 사용할 수 있다.
다만, 보안 위험이 있을 수 있으므로 선택하여 사용해야한다.
신뢰할 수 있는 네트워크에서 실행중이거나, SSL로 보호되는 경우에만 활성화해야 한다.
특히, 프로덕션 배포에서 DevTools의 원격 지원을 활성화 하면 안된다.

 

의존성 추가 및 적용한 과정 commit
https://github.com/mgkim-developer/Spring/commit/da370602c1db595509f186c5e95222f372b1c0e1

 

2022.05.14_(devtools적용 후, Automatic Restart, LiveReload 작동 확인완료) · mgkim-developer/Spring@da37060

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

github.com


+@

Chrome에 LiveReload 설치 및 적용,

 

인텔리제이 설정에서 Build project automatically 체크

 

Advenced Settings 에서 Compiler의 Allow auto-make to start even if developed application is currently running  체크

 

아래 Spring Boot 공식 문서에서 devtools에 대한 자세한 내용을 확인할 수 있다.

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

 

Spring Boot Reference Documentation

This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe

docs.spring.io

반응형