在Spring Boot中配置多个数据源可以通过以下步骤来实现: 在pom.xml文件中添加spring Boot对多数据源的支
在Spring Boot中配置多个数据源可以通过以下步骤来实现:
在pom.xml文件中添加spring Boot对多数据源的支持依赖:
org.springframework.boot
spring-boot-starter-data-jpa
com.zaxxer
HikariCP
在application.properties或application.yml配置文件中配置每个数据源的连接信息:
# 数据源1
spring.datasource.url=jdbc:Mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.passWord=root
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2 spring.datasource.secondary.username=root spring.datasource.secondary.password=root
3. 创建多个DataSource bean,分别对应每个数据源:
```java
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
配置JpaVendorAdapter和EntityManagerFactory bean,指定每个数据源的JPA配置:
@Configuration
@EnableJpaRepositories(
basePackages = "com.example.repository",
entityManagerFactoryRef = "entityManagerFactory",
transactionManagerRef = "transactionManager"
)
public class JpaConfig {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
@Autowired
@Qualifier("secondaryDataSource")
private DataSource secondaryDataSource;
@Primary
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(dataSource)
.packages("com.example.domain")
.persistenceUnit("primary")
.build();
}
@Bean(name = "secondaryEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(secondaryDataSource)
.packages("com.example.domain")
.persistenceUnit("secondary")
.build();
}
@Primary
@Bean(name = "transactionManager")
public PlatfORMTransactionManager transactionManager(
@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
@Bean(name = "secondaryTransactionManager")
public PlatformTransactionManager secondaryTransactionManager(
@Qualifier("secondaryEntityManagerFactory") EntityManagerFactory secondaryEntityManagerFactory) {
return new JpaTransactionManager(secondaryEntityManagerFactory);
}
}
在需要使用数据源的地方使用@Qualifier
注解指定具体的数据源:
@Service
public class MyService {
@Autowired
@Qualifier("entityManagerFactory")
private EntityManagerFactory entityManagerFactory;
// 使用entityManagerFactory进行数据库操作
}
通过以上步骤,就可以在Spring Boot中成功配置多个数据源。
--结束END--
本文标题: springboot怎么配置多数据源
本文链接: https://www.lsjlt.com/news/440293.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
2024-05-12
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0