🔬
Auto-Configuration

How Auto-Configuration Works Internally

Under the Hood
💡 Auto-configuration ek EXPERT ELECTRICIAN hai jo NAYE GHAR (application) mein AATA hai, GHAR ka INSPECTION karta hai (classpath scan), aur KHUD DECIDE karta hai — "yaha AC hai, isliye EXTRA WIRING chahiye; yaha SOLAR panel NAHI hai, isliye WO SETUP SKIP karo" — SAB AUTOMATICALLY, bina TUMHE EK BHI WIRE CHOOSE karne diye.

Auto-configuration @EnableAutoConfiguration ke through TRIGGER hoti hai (jo @SpringBootApplication ke ANDAR INCLUDED hai). Spring Boot ek LIST maintain karta hai (META-INF/spring/...AutoConfiguration.imports file mein) — SAB POSSIBLE auto-configuration classes ki. STARTUP par, Spring Boot HAR EK ko EVALUATE karta hai — "CONDITIONS satisfy hoti hain?"

AGAR conditions (classpath par CLASS PRESENT hai, USER ne khud bean NAHI banaya, SPECIFIC property SET hai) SATISFY hoti hain, WO auto-configuration class ke @Bean methods TRIGGER hote hain, aur beans CREATE ho jaati hain. Ye POORA process, application STARTUP ke DAURAN, MILLISECONDS mein HOTA hai.

// Internally (simplified), DataSourceAutoConfiguration jaisa kuch:
@AutoConfiguration
@ConditionalOnClass(DataSource.class)
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean
    public DataSource dataSource(DataSourceProperties properties) {
        return properties.initializeDataSourceBuilder().build();
    }
}
🔬
Auto-configuration ek EXPERT ELECTRICIAN hai jo NAYE GHAR (application) mein AATA hai, GHAR ka INSPECTION karta hai (classpath scan), aur KHUD DECIDE karta hai — "yaha AC hai, isliye EXTRA WIRING chahiye; yaha SOLAR panel NAHI hai, isliye WO SETUP SKIP karo" — SAB AUTOMATICALLY, bina TUMHE EK BHI WIRE CHOOSE karne diye.
1 / 6
⚡ झट से Recap
  • @EnableAutoConfiguration = auto-configuration LIST ko TRIGGER karta hai
  • AutoConfiguration.imports file = SAARI possible auto-configurations ki LIST
  • Conditions satisfy hone par HI, @Bean methods TRIGGER hote hain
इस page में (2 subtopics)

Spring Boot 2.x mein, auto-configuration classes META-INF/spring.factories file mein LIST hoti thi. Spring Boot 3.x mein, ye NAYI FILE mein SHIFT ho gaya — META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports — PERFORMANCE improvement ke liye (properties file parsing se FASTER).

💡Tip: Ye INTERNAL DETAIL hai, jo NORMALLY application developers ko TOUCH karne ki zaroorat NAHI padti — LIBRARY authors (jo APNI custom starter banaते hain) ke liye relevant hai.

Auto-configurations EK SPECIFIC ORDER mein APPLY hoti hain — @AutoConfigureAfter/@AutoConfigureBefore annotations DEPENDENCIES define karте hain (jaise DataSourceAutoConfiguration, JpaAutoConfiguration SE PEHLE apply honi chahiye, kyunki JPA ko DataSource CHAHIYE).

  • @AutoConfigureAfter/@AutoConfigureBefore = ordering dependencies
  • Example: DataSourceAutoConfiguration PEHLE, JpaAutoConfiguration BAAD mein