Spring vs Spring Boot
SPRING framework SAB KUCH provide karta hai — IoC, DI, MVC, Data access — lekin CONFIGURATION manually karni padti hai (XML ya Java config, dependency versions manage karna, embedded server setup karna). Ye POWERFUL hai lekin verbose/time-consuming.
SPRING BOOT, Spring KE UPAR ek layer hai jo AUTO-CONFIGURATION deta hai — sensible defaults automatically apply hote hain based on classpath dependencies. Embedded server (Tomcat/Jetty) built-in hai — standalone JAR ke roop mein run ho sakta hai (external server deploy karne ki zaroorat nahi). "Starter" dependencies (spring-boot-starter-web) related libraries ka SAHI, COMPATIBLE set automatically laati hain.
// Plain Spring — manual configuration:
@Configuration
@EnableWebMvc
@ComponentScan("com.example")
public class WebConfig implements WebMvcConfigurer {
// ... embedded server setup, view resolver, etc. manually
}
// Spring Boot — ek annotation, sab automatic:
@SpringBootApplication // = @Configuration + @EnableAutoConfiguration + @ComponentScan
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
// Embedded Tomcat automatically start ho jaata hai, port 8080 par
}
}- Spring = framework, manual configuration
- Spring Boot = auto-configuration + embedded server + starters
- Spring Boot apps INTERNALLY Spring hi use karte hain
@SpringBootApplication ek META-ANNOTATION hai — teen annotations combine karta hai: @Configuration (ye class configuration source hai), @EnableAutoConfiguration (classpath dekh ke automatically beans configure karo), @ComponentScan (current package aur sub-packages mein @Component classes DHOONDO).
// Ye EK annotation:
@SpringBootApplication
public class MyApp { }
// Iske BARABAR hai:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class MyApp { }Plain Spring (bina Boot ke) AAJKAL rare hai, lekin kuch cases mein use hota hai — jab EXISTING legacy application server (jaise WebLogic) mein deploy karna ho (embedded server nahi chahiye), ya jab EXTREME fine-grained control chahiye configuration par (Boot ki "magic" defaults avoid karni ho).
- Legacy application server deployments
- Extreme fine-grained configuration control
- Naye projects ke liye — Spring Boot HAMESHA default choice hai