具有多个数据源的java Spring数据控制器
我已经用两个不同的数据源设置了一个Spring数据项目,并试图从单个@Controller
调用特定于数据库的函数。对于每个数据源,我有两个独立的实体管理器、连接属性和事务管理器
下面是我目前的@Controller
@RequestMapping(value = "/searchDB1", produces="application/json", method = RequestMethod.GET)
public List<Map<String, Object>> getList1() {
List<Map<String, Object>> list = this.jdbcTemplate.queryForList(
"select name, id from db1.Database1"
);
return list;
}
@RequestMapping(value = "/searchDB2", produces="application/json", method = RequestMethod.GET)
public void getList2() {
List<Map<String, Object>> list = this.jdbcTemplate.queryForList(
"select name, id from db2.Database2"
);
}
这显然会失败,因为我的jdbcTemplate一次只连接到一个数据库——对于我的控制器来说,根据调用的方法(抽象到服务Impl等)在数据库之间进行选择的最佳方式是什么
# 1 楼答案
没有什么能阻止你依赖两个
JdbcTemplate
。您还没有展示代码的其余部分,但是您可以依赖于两个数据源,并在需要时初始化JdbcTemplate
,因为它是一个实用类,而不是一个可靠的资源传递这两个数据源最简单的方法是使其显式
不过,您也可以使用
@Qualifier
,如the documentation所示