Spring Boot DevTools
spring-boot-devtools ek DEVELOPMENT-TIME dependency hai — LIVE RELOAD provide karta hai. Jab bhi CLASSPATH par KOI FILE CHANGE hoti hai (Java class recompile hoti hai), DevTools APPLICATION ko AUTOMATICALLY, aur FAST, RESTART kar deta hai — MANUAL stop-start cycle ki zaroorat NAHI.
Restart FAST hota hai kyunki DevTools DO SEPARATE CLASSLOADERS use karta hai — EK "base" classloader (libraries ke liye, jo CHANGE nahi hoti) aur EK "restart" classloader (tumhare APNE code ke liye, jo BAAR-BAAR change hoti hai). Sirf RESTART classloader RELOAD hota hai, isliye FULL restart se BAHUT FASTER hai.
<!-- pom.xml — sirf DEVELOPMENT ke liye, production build mein EXCLUDE ho jaata hai: -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- application.properties (optional customization): -->
<!-- spring.devtools.restart.enabled=true -->
<!-- spring.devtools.livereload.enabled=true -- browser bhi auto-refresh ho -->- Code change → automatic, FAST restart (manual stop-start ki zaroorat NAHI)
- Do classloaders (base + restart) — sirf changed code reload hota hai, FAST
- Production mein AUTOMATICALLY disabled — sirf development ke liye
spring-boot-maven-plugin AUTOMATICALLY DevTools ko FINAL, PACKAGED JAR se EXCLUDE kar deta hai (agar <optional>true</optional> set hai pom.xml mein) — production build mein DevTools ka koi TRACE NAHI hota, koi manual step nahi chahiye.
DevTools REMOTE applications (jaise EK cloud server par RUNNING app) ke saath bhi kaam kar sakta hai — SPECIAL configuration se, LOCAL machine se CHANGES REMOTE server par bhi TRIGGER ki ja sakti hain. PRACTICALLY, ye RARELY use hota hai — ZYAADATAR LOCAL development ke liye hi DevTools relevant hai.
- Remote debugging POSSIBLE hai, lekin RARELY practical use mein
- Local development LOOP hi DevTools ka PRIMARY use-case hai