spring多数据源
时间: 2023-07-25 07:12:16 浏览: 43
在Spring中使用多个数据源需要进行以下步骤:
1. 配置数据源:为每个数据源创建一个DataSource实例。
2. 配置EntityManagerFactory:为每个数据源创建一个EntityManagerFactory实例。
3. 配置TransactionManager:为每个数据源创建一个TransactionManager实例。
4. 配置Repository:为每个数据源创建一个Repository实例。
以下是一个简单的示例代码,演示如何在Spring中使用多个数据源:
```java
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.example.repository1", entityManagerFactoryRef = "entityManagerFactory1", transactionManagerRef = "transactionManager1")
public class DataSourceConfig1 {
@Primary
@Bean(name = "dataSource1")
@ConfigurationProperties(prefix = "spring.datasource1")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "entityManagerFactory1")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("dataSource1") DataSource dataSource) {
return builder.dataSource(dataSource).packages("com.example.domain1").persistenceUnit("dataSource1").build();
}
@Primary
@Bean(name = "transactionManager1")
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory1") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.example.repository2", entityManagerFactoryRef = "entityManagerFactory2", transactionManagerRef = "transactionManager2")
public class DataSourceConfig2 {
@Bean(name = "dataSource2")
@ConfigurationProperties(prefix = "spring.datasource2")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "entityManagerFactory2")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("dataSource2") DataSource dataSource) {
return builder.dataSource(dataSource).packages("com.example.domain2").persistenceUnit("dataSource2").build();
}
@Bean(name = "transactionManager2")
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory2") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
```
在这个例子中,我们定义了两个数据源:dataSource1和dataSource2,并为每个数据源创建了EntityManagerFactory和TransactionManager。我们还为每个数据源定义了一个不同的JPA存储库。
希望这可以帮助你理解如何在Spring中使用多个数据源。