Spring Boot - dev tools에 관한 설명이다.

->*cache:데이터 임시 저장 공간.
->두번째 줄을 보면, option=true(저번 메모,Spring Boot-4 마지막 부분)인 이유가 또 나오는데, production(베포) 상태일때는 caching이 매우 좋지만(ex. 웹 같은 경우, cache에 미리 데이터를 임시 저장하므로, 로딩 속도가 더 빨라진다.), develop(개발) 상태일때는 좋지 않다.
->그 이유로 preventing you from seeing the changes you just made in your application.이라고 함(자세한 설명은 밑에 그림 참고)
*cf.)parsing
->프로그램에서는 주로 다른 언어로 작성된 문서를 디코딩 한다는 뜻이라고 한다.
디코딩의 뜻은 변형된 부호를 다시 원래 상태로 되돌리는 것을 뜻한다.(<->인코딩)
(출처:https://moo-you.tistory.com/479)

->즉, 개발 상태에서는 cache가 활성화 되어 있으면, 캐시에 저장된 이전 버전의 데이터를 사용하게 되어, 이전 버전이 보여지게 되는 것이다.

->1.메모리에 로드될 때 '딱 한번만 초기화' 2. '모든 객체가 그 값을 공유'
->2번 이유 때문에 1번이 되는 것이다.




<좀 더 쉬운 설명을 위해 간단한 요약>


->spring-boot-devtools는 classpath change 상에 있는 파일들을 자동적으로 재시작해준다.
->즉, 한마디로 변경 선 상에 있는 class들을 자동적으로 재시작한다는 의미임.(저번 시간에 메모한 devtools의 기능을 다시 한번 명시하는 것이다.)
cf.) classpath란?

->즉, 'class를 찾을 때의 경로'를 의미함.

->Eclipse 같은 IDE에서는 바로바로 restart가 되지만, intelliJ 같은 IDE에서는 build를 다시 해줘야 한다.(devtools가 있어도)
->VSCode도 build 다시 해야 됨.(직접 경험해 봄)

->Spring Boot가 제공하는 Restart는 2개의 classloader로 나뉨.
->base classloader(classes that do not change,라이브러리나 외부 의존성 등) & restart classloader(you are actively developing)
->restart가 발생하면, restart classloader는 버려지고(restart에 반영됐으므로), a new one이 새로 생긴다.
->이는 cold starts(reload starts)보다 훨씬 빠르다. -> 당연하게도, restart는 변하지 않은 base classloader를 이미 사용할 수 있으므로.
->reload starts: 아예 다시 껐다가 다시 load하는 것을 의미함. 즉, 모든 클래스가 종료되고 다시 load 되는 것을 의미함.

->즉, 무언가를 복제하여 독립적인 작업을 수행을 의미함.

->이것이 이유이다.

-> 웹에서 자동으로 새로 고침을 의미함.
-> chrome,firefox,Safari 에서 쓸 수 있다.(livereload 플러그인 깔면)
local이 아닌 원격으로 개발 및 실행하는 환경을 의미함.
이제까지는 설정 쪽만 다룬 느낌.