본문 바로가기

Spring/Spring Boot

(SpringBoot) Spring-Boot-Devtools


스프링부트가 제공하는 Optional한 Tool

 

pom.xml 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/html/using-boot-devtools.html

 

20. Developer tools

Applications that use spring-boot-devtools will automatically restart whenever files on the classpath change. This can be a useful feature when working in an IDE as it gives a very fast feedback loop for code changes. By default, any entry on the classpath

docs.spring.io

https://github.com/spring-projects/spring-boot/blob/v1.5.16.RELEASE/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java

 

spring-projects/spring-boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

해당 설정들이 변경된다.

주로 캐시를 끄는것과 관련있다. 

개발 시 캐시가 켜있으면 개발한 내용이 바로바로 변하지않아 브라우저에 캐시를 비워야하는 불편함이 따르기 때문이다.

 

Automatic restart

코드를 변경하였을때 바로 바로 restart 해준다.

이때 restart 시키는 속도가 tomcat을 재기동하는 속도보다 빠르다.

왜일까?

 

스프링부트는 클래스로더를 두가지를 사용한다.

  • base classloader - 라이브러리 즉 의존성을 읽어들이는 클래스 로더 
  • restart classloader - 애플리케이션을 읽어들이는 클래스 로더

어플리케이션이 재기동될때 기존의 restart classloader는 버리고  새로운 클래스로더를 만든다.

이게 가능한 것은 baser classloader를 구분하였기때문에 restart classloader를 쉽게 갈아치울수 있는 것이다.

'Spring > Spring Boot' 카테고리의 다른 글

(SpringBoot) Spring Mvc(2) - HttpMessageConverters  (0) 2020.01.10
(SpringBoot) Spring Mvc(1)  (0) 2020.01.10
(SpringBoot) 테스트  (0) 2020.01.05
(SpringBoot) logging(2) - 커스터마이징  (0) 2020.01.05
(SpringBoot) Logging  (0) 2020.01.05