How Auto-Configuration Works Internally
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();
}
}- @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
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).
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