Spring Boot 与 MySQL 多数据源配置

在开发过程中,我们经常会遇到需要同时连接多个数据库的情况,比如一个系统需要访问多个不同的数据库,或者需要将数据存储在不同的数据库中。Spring Boot 提供了很方便的方式来配置多数据源,本文将介绍如何在 Spring Boot 中配置多个 MySQL 数据源并进行访问。

添加依赖

首先,在 pom.xml 文件中添加 MySQL 驱动和 Spring Boot Data JPA 的依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

配置数据源

application.propertiesapplication.yml 文件中配置多个数据源的连接信息,例如:

# 第一个数据源
spring.datasource.datasource1.url=jdbc:mysql://localhost:3306/database1
spring.datasource.datasource1.username=root
spring.datasource.datasource1.password=root

# 第二个数据源
spring.datasource.datasource2.url=jdbc:mysql://localhost:3306/database2
spring.datasource.datasource2.username=root
spring.datasource.datasource2.password=root

创建数据源配置类

为每个数据源创建一个配置类,分别继承 org.springframework.boot.autoconfigure.jdbc.DataSourcePropertiesjavax.sql.DataSource

@Configuration
@EnableTransactionManagement
public class DataSource1Config {

    @Primary
    @Bean(name = "datasource1")
    @ConfigurationProperties(prefix = "spring.datasource.datasource1")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

@Configuration
@EnableTransactionManagement
public class DataSource2Config {

    @Bean(name = "datasource2")
    @ConfigurationProperties(prefix = "spring.datasource.datasource2")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

创建实体类和 Repository

创建对应的实体类和 Repository 接口,用于访问数据库表:

@Entity
@Table(name = "table1")
public class Entity1 {
    // fields
}

@Repository
public interface Repository1 extends JpaRepository<Entity1, Long> {
    // custom queries
}

@Entity
@Table(name = "table2")
public class Entity2 {
    // fields
}

@Repository
public interface Repository2 extends JpaRepository<Entity2, Long> {
    // custom queries
}

使用数据源

在服务或控制器中注入对应的 Repository,并使用多数据源进行访问:

@Service
public class MyService {
    
    @Autowired
    private Repository1 repository1;

    @Autowired
    private Repository2 repository2;

    public void myMethod() {
        // access data from repository1
        // access data from repository2
    }
}

总结

通过以上步骤,我们就可以在 Spring Boot 中配置多个 MySQL 数据源并进行访问。在实际开发中,根据业务需求和性能要求,可以灵活配置多数据源并使用多数据源访问不同的数据库表。这样可以更好地管理数据,提高系统的性能和可维护性。


journey
    title Spring Boot 与 MySQL 多数据源配置
    section 添加依赖
        Start --> 添加依赖: pom.xml
    section 配置数据源
        添加依赖 --> 配置数据源: application.properties
    section 创建数据源配置类
        配置数据源 --> 创建数据源配置类: DataSource1Config, DataSource2Config
    section 创建实体类和 Repository
        创建数据源配置类 --> 创建实体类和 Repository: Entity1, Entity2, Repository1, Repository2
    section 使用数据源
        创建实体类和 Repository --> 使用数据源: MyService

通过本文的介绍,相信大家对于 Spring Boot 中配置多数据源并进行访问有了更深入的了解。在实际项目中,根据具体需求,合理配置多数据源能够更好地满足业务需求。希望本文能够帮助到大家,谢谢阅读!