如何在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
相关产品推荐
相关产品推荐

