springboot怎么配置多数据源

   2025-02-15 4530
核心提示:在Spring Boot中配置多个数据源可以通过以下步骤来实现:在pom.xml文件中添加Spring Boot对多数据源的支持依赖:dependencygroup

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

在pom.xml文件中添加Spring Boot对多数据源的支持依赖:
<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency>    <groupId>com.zaxxer</groupId>    <artifactId>HikariCP</artifactId></dependency>
在application.properties或application.yml配置文件中配置每个数据源的连接信息:
# 数据源1spring.datasource.url=jdbc:mysql://localhost:3306/db1spring.datasource.username=rootspring.datasource.password=root# 数据源2spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2spring.datasource.secondary.username=rootspring.datasource.secondary.password=root
创建多个DataSource bean,分别对应每个数据源:
@Configurationpublic 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注解指定具体的数据源:
@Servicepublic class MyService {    @Autowired    @Qualifier("entityManagerFactory")    private EntityManagerFactory entityManagerFactory;    // 使用entityManagerFactory进行数据库操作}

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

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言