A class loader is a JVM component that loads Java classes and other application resources. Spring Boot DevTools uses separate class loaders to make development restarts faster. section 1.3.5
DevTools divides the running application into two loading areas:
- One class loader loads project code, property files, and other resources under src/main/, which commonly change during development. section 1.3.5
- Another class loader loads dependency libraries, which generally change less often. section 1.3.5
- When project changes are detected, DevTools reloads only the project class loader and restarts the Spring application context while leaving the dependency loader and JVM intact. section 1.3.5
Changing a dependency
Editing Java code or a property file can trigger an automatic restart. Adding, changing, or removing a dependency requires a hard application restart because the dependency class loader is not automatically reloaded. section 1.3.5

