首页主机资讯springboot怎么配置多数据源

springboot怎么配置多数据源

时间2023-12-03 22:25:02发布访客分类主机资讯浏览745
导读:在Spring Boot中配置多个数据源可以通过以下步骤来实现: 在pom.xml文件中添加Spring Boot对多数据源的支持依赖: org.springframework.boot spring-boot-starter-d...

在Spring Boot中配置多个数据源可以通过以下步骤来实现:

  1. 在pom.xml文件中添加Spring Boot对多数据源的支持依赖:

    
     org.springframework.boot
     spring-boot-starter-data-jpa
    
    
     com.zaxxer
     HikariCP
    
  2. 在application.properties或application.yml配置文件中配置每个数据源的连接信息:

    
    # 数据源1
    spring.datasource.url=jdbc:mysql://localhost:3306/db1
    spring.datasource.username=root
    spring.datasource.password=root

数据源2

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();

    }

}
  1. 配置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);
    
     }
    
    }
    
  2. 在需要使用数据源的地方使用@Qualifier注解指定具体的数据源:

    @Service
    public class MyService {
        
    
     @Autowired
     @Qualifier("entityManagerFactory")
     private EntityManagerFactory entityManagerFactory;
    
    
     // 使用entityManagerFactory进行数据库操作
    }
        

通过以上步骤,就可以在Spring Boot中成功配置多个数据源。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: springboot怎么配置多数据源
本文地址: https://pptw.com/jishu/566788.html
C++中beginthreadex()如何向线程函数传递参数 css3 文字动态效果

游客 回复需填写必要信息