springboot jpa多数据源配置
时间: 2024-11-22 12:26:30 浏览: 35
Spring Boot结合JPA (Java Persistence API) 配置多数据源通常是为了处理数据库分层架构,例如有生产环境、测试环境和开发环境等。以下是基本的配置步骤:
1. 添加依赖:首先,在`pom.xml`或`build.gradle`文件中添加Spring Data JPA和对应的数据源管理库(如HikariCP、Druid等)。
```xml
<!-- Maven -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Gradle -->
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.alibaba.druid:druid-spring-boot-starter'
```
2. 定义数据源:创建一个或多份`DataSource` bean,每个bean代表一个数据源,通常在application.yml或application.properties中配置。
```yaml
# application.yml 或 application.properties
spring.datasource.master.url=jdbc:mysql://localhost/masterdb
spring.datasource.master.username=root
spring.datasource.master.password=masterpass
spring.datasource.secondary.url=jdbc:mysql://localhost/secondarydb
spring.datasource.secondary.username=root
spring.datasource.secondary.password=secpass
```
3. 使用@Profile注解区分数据源:通过Spring Profile来控制在运行时切换数据源。例如:
```java
@Configuration
@EnableJpaRepositories(basePackages = "com.example.demo.repository")
public class JpaConfig {
@Autowired
private Environment env;
@Profile("prod")
@Bean(name = "primaryDataSource")
public DataSource primaryDataSource() {
// 生产环境数据源配置
}
@Profile("test")
@Bean(name = "secondaryDataSource")
public DataSource secondaryDataSource() {
// 测试环境数据源配置
}
@Profile({"dev", "default"})
@Bean(name = "dataSource")
public DataSource dataSource() {
// 开发环境默认数据源配置
}
}
```
4. 使用Repository:在Repository接口上加入`@Transactional`注解,并指定事务所使用的数据源。如果未指定,默认会使用`dataSource`。
```java
@Repository
@Transactional(rollbackFor = Exception.class)
public interface MyRepository extends JpaRepository<MyEntity, Long> {
//...
}
```
阅读全文