Spring Boot 2.1.1.RELEASE 多数据源配置与使用

本文详细介绍了在SpringBoot中如何配置和使用多个数据源,包括数据库连接参数设置,通过DataSourceConfig类创建并注入不同数据源,以及在测试类中通过@Qualifier注解指定使用特定数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候,一个系统的功能,需要两个或两个以上的数据库,

在Spring Boot 中要如何配置? How to?

#primary
primary.spring.datasource.jdbc-url=jdbc:mysql://localhost:3316/test1
primary.spring.datasource.username=root
primary.spring.datasource.password=root
primary.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver


#secondary
secondary.spring.datasource.jdbc-url=jdbc:mysql://localhost:3316/test2
secondary.spring.datasource.username=root
secondary.spring.datasource.password=root
secondary.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

新建一个类DataSourceConfig

@Configuration
public class DataSourceConfig {

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

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

    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean(name = "secondaryJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}

 

 

之后在运用的时候,注意@Qualifier

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class ApplicationTests {

    @Autowired
    @Qualifier("primaryJdbcTemplate")
    protected JdbcTemplate jdbcTemplate1;

    @Autowired
    @Qualifier("secondaryJdbcTemplate")
    protected JdbcTemplate jdbcTemplate2;

    @Before
    public void setUp() {
        jdbcTemplate1.update("DELETE  FROM  USER ");
        jdbcTemplate2.update("DELETE  FROM  USER ");
    }

    @Test
    public void test() throws Exception {

        // 往第一个数据源中插入两条数据
        jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 1, "aaa", 20);
        jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 2, "bbb", 30);
}}

 

 

java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

修改application.xml中的数据库的url, 用spring.datasource.jdbc-url,而不是通常使用的spring.datasource.url。 

 

之前用的如下截图,总是报错

 

转载于:https://www.cnblogs.com/qianjinyan/p/10185067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值