You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring bean.xml中配置多数据源(基于JdbcTemplate)

Spring JdbcTemplate 多数据源配置(基于bean.xml)

我来给你详细说说怎么在bean.xml里配置多数据源吧,其实逻辑很清晰——就是先定义多个独立的数据源Bean,再给每个JdbcTemplate分别绑定对应的数据源,这样就能分别操作不同的数据库了。

第一步:配置多个数据源Bean

你之前的单数据源是一个dataSource,现在我们给每个数据源设置不同的id,区分开不同的数据库配置:

<!-- 第一个数据源:对应test数据库 -->
<bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="xxx" />
    <property name="url" value="jdbc:mysql://localhost:3306/test" />
    <property name="password" value="yyy"/>
</bean>

<!-- 第二个数据源:对应test2数据库(示例) -->
<bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="xxx2" />
    <property name="url" value="jdbc:mysql://localhost:3306/test2" />
    <property name="password" value="yyy2"/>
</bean>

你可以根据实际需求继续添加更多数据源,只要保证每个数据源的id唯一就行。

第二步:给每个JdbcTemplate绑定对应的数据源

接下来要创建多个JdbcTemplate实例,每个实例关联一个数据源:

<!-- 绑定第一个数据源的JdbcTemplate -->
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource1"/>
</bean>

<!-- 绑定第二个数据源的JdbcTemplate -->
<bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource2"/>
</bean>

第三步:在业务层使用对应的JdbcTemplate

之后在你的业务类里,就可以根据需要注入对应的JdbcTemplate来操作不同的数据库了,举个例子:

@Service
public class MultiDbService {
    // 操作test库的JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate1;
    
    // 操作test2库的JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate2;
    
    // 示例方法:从test库查询数据
    public List<User> getUsersFromTestDb() {
        String sql = "SELECT * FROM user";
        return jdbcTemplate1.query(sql, new BeanPropertyRowMapper<>(User.class));
    }
    
    // 示例方法:从test2库查询数据
    public List<Order> getOrdersFromTest2Db() {
        String sql = "SELECT * FROM `order`";
        return jdbcTemplate2.query(sql, new BeanPropertyRowMapper<>(Order.class));
    }
}

这样配置之后,你就能通过不同的JdbcTemplate操作各自对应的数据库啦,是不是很简单?

内容的提问来源于stack exchange,提问作者hmmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:08:38