본문 바로가기
IT/Java

[Spring] Devtools 이란? (23.08.19)

by 성준하이 2023. 8. 20.
반응형

Devtools 는 Springboot 에서 제공하는 개발 편의를 위한 모듈이다.

 

그럼 어떤 부분에서 개발이 편리해지느냐.

아래 5가지에 대해서 기능을 제공한다.

  • Property Defaults
  • Automatic Restart
  • Live Reload
  • Global Settings
  • Remote Applications

 

적용하는 방법은 간단하다.

다른것들과 비슷하게 library를 추가해주면 된다.

 

Gradle 사용시

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

Maven 사용시

<dependencies>
​​​​     <dependency>
​​​​    ​​​​     ​​​​​​​​<groupId>org.springframework.boot</groupId>
​​​​     ​​​​​​​​​​​     ​<artifactId>spring-boot-devtools</artifactId>
​​​​​​​​​​​​    ​​​​     <optional>true</optional>
​​​​​​​​     </dependency>
</dependencies>

 

위 5가지 기능을 하나씩 살펴보면,

Property Defaults (속성 기본값)

Springboot에서 지원하는 여러 라이브러리는 캐시를 사용하여 성능을 향상시킨다.
예를 들어, 템플릿 엔진은 템플릿 파일을 반복적으로 구문 분석하지 않도록 컴파일된 템플릿을 캐시한다.
또한, 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 설정을 구성할 수 있다.

  • spring-boot-devtools.properties
  • spring-boot-devtools.yaml
  • 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 원격 지원을 활성화 하면 안된다.

 

자세한 내용은 스프링 공식 홈페이지 에서 확인이 가능하다.

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

 

반응형

댓글