Multiple DataSources
Spring Boot ka AUTO-CONFIGURATION SIRF SINGLE DataSource SCENARIO ke liye OPTIMIZED hai — jab APPLICATION ko MULTIPLE, DIFFERENT DATABASES se CONNECT karna ho (jaise MAIN application database + SEPARATE ANALYTICS database, ya LEGACY system database), MANUAL CONFIGURATION zaroori ho jaati hai.
EK DataSource ko @Primary MARK KIYA jaata hai (DEFAULT choice jab AMBIGUOUS ho). BAAKI SECONDARY DataSources ke liye, @Qualifier se EXPLICITLY SPECIFY karna padta hai. HAR DataSource ke SAATH, ALAG EntityManagerFactory aur TransactionManager bhi CONFIGURE karne padte hain.
@Configuration
public class DataSourceConfig {
@Primary
@Bean
@ConfigurationProperties("app.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("app.datasource.legacy")
public DataSource legacyDataSource() {
return DataSourceBuilder.create().build();
}
}
// application.properties:
app.datasource.primary.url=jdbc:postgresql://main-db/app
app.datasource.legacy.url=jdbc:mysql://legacy-db/oldapp
// Usage — @Qualifier se SPECIFIC DataSource select:
@Repository
public class LegacyReportRepository {
public LegacyReportRepository(@Qualifier("legacyDataSource") DataSource ds) { }
}- Auto-configuration SIRF single DataSource ke liye — multiple mein MANUAL config
- @Primary = default choice, @Qualifier = specific secondary DataSource select
- Significant complexity add karta hai — SIMPLER alternatives PEHLE CONSIDER karo
Jab APPLICATION ko MULTIPLE, DIFFERENT databases se CONNECT karna ho (jaise MAIN database + LEGACY reporting database), EK @Primary DataSource MARK ki jaati hai (DEFAULT), aur SECONDARY DataSources @Qualifier se EXPLICITLY SELECT ki jaati hain.
@Configuration
public class DataSourceConfig {
@Primary
@Bean
@ConfigurationProperties("app.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("app.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}MULTIPLE DataSources ke saath, HAR EK ka APNA SEPARATE EntityManagerFactory aur TransactionManager bhi CONFIGURE karna padta hai — Spring Boot ka AUTO-CONFIGURATION SIRF SINGLE DataSource scenario ke liye hai, MULTIPLE DataSources MANUAL Java-config MANGTE hain.