Spring Boot 配置多个 PostgreSQL 数据源

在 Spring Boot 应用中,经常需要连接多个数据库,例如读写分离、多租户架构等场景。本文将介绍如何使用 Spring Boot 和 Spring Data JPA 配置多个 PostgreSQL 数据源。

方法一:使用 @Configuration 和 @Bean 注解

  1. 创建多个数据源配置类:
@Configuration
public class DataSource1Config {

    @Bean
    @ConfigurationProperties(prefix = 'spring.datasource1')
    public DataSource dataSource1() {
        return DataSourceBuilder.create().build();
    }
}

@Configuration
public class DataSource2Config {

    @Bean
    @ConfigurationProperties(prefix = 'spring.datasource2')
    public DataSource dataSource2() {
        return DataSourceBuilder.create().build();
    }
}
  1. 在 application.properties 中配置数据源属性:
spring.datasource1.url=jdbc:postgresql://localhost:5432/db1
spring.datasource1.username=username1
spring.datasource1.password=password1
spring.datasource1.driver-class-name=org.postgresql.Driver

spring.datasource2.url=jdbc:postgresql://localhost:5432/db2
spring.datasource2.username=username2
spring.datasource2.password=password2
spring.datasource2.driver-class-name=org.postgresql.Driver
  1. 注入对应的数据源:
@Autowired
@Qualifier('dataSource1')
private DataSource dataSource1;

@Autowired
@Qualifier('dataSource2')
private DataSource dataSource2;

方法二:使用 @Primary 和 @Qualifier 注解

  1. 在 application.properties 中配置数据源属性:
spring.datasource1.url=jdbc:postgresql://localhost:5432/db1
spring.datasource1.username=username1
spring.datasource1.password=password1
spring.datasource1.driver-class-name=org.postgresql.Driver

spring.datasource2.url=jdbc:postgresql://localhost:5432/db2
spring.datasource2.username=username2
spring.datasource2.password=password2
spring.datasource2.driver-class-name=org.postgresql.Driver
  1. 定义多个数据源,并使用 @Primary 指定默认数据源:
@Configuration
public class DataSourceConfig {

    @Bean
    @Primary
    @ConfigurationProperties(prefix = 'spring.datasource1')
    public DataSource dataSource1() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix = 'spring.datasource2')
    public DataSource dataSource2() {
        return DataSourceBuilder.create().build();
    }
}
  1. 注入对应的数据源:
@Autowired
private DataSource dataSource1; // 默认数据源

@Autowired
@Qualifier('dataSource2')
private DataSource dataSource2;

总结

以上两种方法都可以实现 Spring Boot 多数据源配置。选择哪种方法取决于个人偏好和项目需求。 使用 @Configuration@Bean 注解的方式更加灵活,可以自由定义数据源名称和配置。而使用 @Primary@Qualifier 注解的方式较为简洁,适合简单的多数据源场景。

SpringBoot 配置多个 PostgreSQL 数据源 | Spring Data JPA 多数据源

原文地址: https://www.cveoy.top/t/topic/jpRH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录