Spring Boot 2 多个数据源初始化架构

作者:编程家 分类: database 时间:2025-07-08

# 使用Spring Boot 2实现多数据源初始化架构

在Spring Boot 2中,实现多数据源的初始化架构是一个常见的需求,特别是在复杂的应用程序中。通过合理配置和管理多个数据源,可以提高系统的性能和灵活性。本文将介绍如何在Spring Boot 2中实现多数据源初始化,并提供相应的案例代码。

## 添加多数据源配置

首先,我们需要在`application.properties`文件中配置多个数据源的连接信息。在这个例子中,我们将使用两个数据源,分别命名为`datasource1`和`datasource2`。

properties

# 数据源1

spring.datasource.datasource1.url=jdbc:mysql://localhost:3306/db1

spring.datasource.datasource1.username=root

spring.datasource.datasource1.password=root

spring.datasource.datasource1.driver-class-name=com.mysql.cj.jdbc.Driver

# 数据源2

spring.datasource.datasource2.url=jdbc:mysql://localhost:3306/db2

spring.datasource.datasource2.username=root

spring.datasource.datasource2.password=root

spring.datasource.datasource2.driver-class-name=com.mysql.cj.jdbc.Driver

## 创建数据源配置类

接下来,我们需要创建数据源配置类,分别配置`datasource1`和`datasource2`。

java

@Configuration

public class DataSourceConfig {

@Primary

@Bean(name = "datasource1")

@ConfigurationProperties(prefix = "spring.datasource.datasource1")

public DataSource dataSource1() {

return DataSourceBuilder.create().build();

}

@Bean(name = "datasource2")

@ConfigurationProperties(prefix = "spring.datasource.datasource2")

public DataSource dataSource2() {

return DataSourceBuilder.create().build();

}

}

在上面的配置中,`@Primary`注解标识了默认的主数据源。

## 创建JdbcTemplate Bean

为了方便操作数据库,我们可以使用`JdbcTemplate`来执行SQL语句。下面是配置`JdbcTemplate`的类。

java

@Configuration

public class JdbcTemplateConfig {

@Primary

@Bean(name = "jdbcTemplate1")

public JdbcTemplate jdbcTemplate1(@Qualifier("datasource1") DataSource dataSource) {

return new JdbcTemplate(dataSource);

}

@Bean(name = "jdbcTemplate2")

public JdbcTemplate jdbcTemplate2(@Qualifier("datasource2") DataSource dataSource) {

return new JdbcTemplate(dataSource);

}

}

## 在Service层使用多数据源

现在,我们可以在Service层中使用多个数据源了。下面是一个简单的Service类的例子。

java

@Service

public class MultiDataSourceService {

@Autowired

@Qualifier("jdbcTemplate1")

private JdbcTemplate jdbcTemplate1;

@Autowired

@Qualifier("jdbcTemplate2")

private JdbcTemplate jdbcTemplate2;

public List> getDataFromDataSource1() {

return jdbcTemplate1.queryForList("SELECT * FROM table1");

}

public List> getDataFromDataSource2() {

return jdbcTemplate2.queryForList("SELECT * FROM table2");

}

}

##

通过以上配置,我们成功实现了Spring Boot 2中的多数据源初始化架构。通过合理配置数据源和使用相应的`JdbcTemplate`,我们可以在应用程序中轻松地操作多个数据库。这种架构为复杂的业务场景提供了灵活性和可维护性,使得系统更具扩展性。

在实际项目中,你可能会面对更多复杂的场景和需求,但本文提供的基本配置和代码可以作为起点,帮助你更好地理解和应用Spring Boot 2中的多数据源初始化。