温馨提示×

spring怎么配置多个数据源

小亿
87
2023-12-25 11:46:26
栏目: 编程语言

在Spring中配置多个数据源可以通过以下步骤实现:
1. 创建数据源配置类:创建一个类,用于配置数据源的相关信息,包括数据库的连接URL、用户名、密码等。可以使用`@Configuration`注解将该类标记为配置类。

@Configuration
public class DataSourceConfig {

    @Bean

    public DataSource dataSource1() {

        // 配置第一个数据源

        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);

        dataSource.setUrl(“jdbc:mysql://localhost:3306/db1”);

        dataSource.setUsername(“user1”);

        dataSource.setPassword(“password1”);

        return dataSource;

    }

    @Bean

    public DataSource dataSource2() {

        // 配置第二个数据源

        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);

        dataSource.setUrl(“jdbc:mysql://localhost:3306/db2”);

        dataSource.setUsername(“user2”);

        dataSource.setPassword(“password2”);

        return dataSource;

    } }

2. 配置数据源事务管理器:在Spring中,事务管理器是用于管理事务的对象。可以使用@Bean注解将事务管理器配置为Spring的Bean。

@Configuration
public class TransactionManagerConfig {

    @Autowired

    @Qualifier(“dataSource1”)

    private DataSource dataSource1;

    @Autowired

    @Qualifier(“dataSource2”)

    private DataSource dataSource2;

    @Bean

    public PlatformTransactionManager transactionManager1() {

        return new DataSourceTransactionManager(dataSource1);

    }

    @Bean

    public PlatformTransactionManager transactionManager2() {

        return new DataSourceTransactionManager(dataSource2);

    } }

3. 配置数据源的JdbcTemplate:JdbcTemplate是Spring提供的用于执行SQL语句的工具类。可以使用@Bean注解将JdbcTemplate配置为Spring的Bean。

@Configuration
public class JdbcTemplateConfig {

    @Autowired

    @Qualifier(“dataSource1”)

    private DataSource dataSource1;

    @Autowired

    @Qualifier(“dataSource2”)

    private DataSource dataSource2;

    @Bean

    public JdbcTemplate jdbcTemplate1() {

        return new JdbcTemplate(dataSource1);

    }

    @Bean

    public JdbcTemplate jdbcTemplate2() {

        return new JdbcTemplate(dataSource2);

    } }

完成以上配置后,就可以通过注入DataSourcePlatformTransactionManagerJdbcTemplate来使用相应的数据源了。
注意:在使用多数据源时,需要为每个数据源配置独立的事务管理器和JdbcTemplate对象,以确保每个数据源的事务和SQL操作独立运行。

0