자라선

15. devtools 본문

Develop/Spring Boot

15. devtools

자라선 2020. 7. 27. 16:28

스프링 부트에서 제공하는 optional한 툴

프로젝트의 캐시 설정을 개발환경에 맞춰 변경할 수 있는 의존성 라이브러리

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

의존성을 정의하면 아래 링크에 나오는 프로퍼티 설정이 적용되며 이러한 spring-boot-devtools.properties 는 최우선 적용되는 설정이다.

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


Auto Reload

프로젝트 빌드 후 톰캣 서버를 올리고 코드 수정이 일어날경우 이를 반영하기 위해서는 서버를 재시작해주어야 한다. 하지만 의존성을 정의한다면 이를 자동 재시작을 하여 바로 코드가 반영된다.

코드 수정 후 [ build/build project] 로 빌드 한다면 자동 재시작 된다.

 

devtools JRebel 라이브러리는 비슷한것 같지만 내부적으로 서로 다른 성능을 가지고 있으며 실질적으로 devtools가 더 빠르게 재시작 된며 그 이유는

devtools 2개의 classloader를 가지고 있으며 첫 프로젝트 시작시 base Classloader에 로드 되며 코드 변경시 빌드 한다면 restart Classloader에 로드되며 또 다시 코드가 수정된다면 restart Classloader는 삭제되고 새로운 Classloader가 생성되어 로드를 한다.

 

서버가 리로드시 브라우저 또한 자동 새로고침 하게 해줄 수 있는데 이경우 Live Reload Plugin를 브라우저에서 설치 해주어야 한다.

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

18. webJars  (0) 2020.07.27
16. Spring MVC  (0) 2020.07.27
14. Test  (0) 2020.07.27
13. Logging  (0) 2020.07.27
12. Profile  (0) 2020.07.27
Comments