Building Custom Auto-Configuration
Bade ORGANIZATIONS mein, MULTIPLE microservices ke beech COMMON configuration (jaise LOGGING format, DEFAULT security settings, CUSTOM exception handling) SHARE karna COMMON NEED hai. INSTEAD OF, HAR service mein YE code DUPLICATE karne ke, EK "INTERNAL STARTER" library banaई ja sakti hai — @AutoConfiguration class ke saath.
@AutoConfiguration annotation (Spring Boot 2.7+) is CUSTOM class ko MARK karta hai. META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports file mein, is CLASS ka FULLY-QUALIFIED NAME LIST kiya jaata hai — Spring Boot ISI FILE ko SCAN karके, AUTO-CONFIGURATION DISCOVER karta hai.
// Custom starter library ke andar:
@AutoConfiguration
@ConditionalOnClass(AuditLogger.class)
@EnableConfigurationProperties(AuditProperties.class)
public class AuditAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public AuditLogger auditLogger(AuditProperties props) {
return new AuditLogger(props.getFormat());
}
}
// META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports:
// com.company.audit.AuditAutoConfiguration
// Consuming application — SIRF dependency add karo, KUCH bhi likhne ki zaroorat NAHI:
// <dependency><groupId>com.company</groupId><artifactId>audit-starter</artifactId></dependency>- @AutoConfiguration = custom auto-configuration class ko mark karta hai
- AutoConfiguration.imports file = Spring Boot ko bataता hai KAHA discover karni hai
- Use-case: MULTIPLE microservices ke beech COMMON configuration SHARE karna
ORGANIZATIONS jo MULTIPLE microservices banaते hain, aksar APNI KHUD KI "internal starter" library banaते hain — COMMON configuration (jaise LOGGING format, SECURITY defaults) EK JAGAH DEFINE, aur SAARI teams us STARTER ko DEPENDENCY ke roop mein ADD karti hain, CONSISTENCY ke liye.
@AutoConfiguration
@ConditionalOnClass(MyService.class)
public class MyServiceAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MyService myService() {
return new MyService();
}
}
// META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports:
// com.example.MyServiceAutoConfigurationSpring Boot 2.7+ mein, CUSTOM auto-configuration classes ke liye @AutoConfiguration annotation (NAYA) use hoti hai, @Configuration ke BAJAYE — ye Spring Boot ko SIGNAL karta hai ki YE class SPECIFICALLY auto-configuration PURPOSE ke liye hai, aur SPECIAL ORDERING support (jaise @AutoConfigureAfter) MILTA hai.