[英]Spring Data Controller with Multiple Datasources
我已經用兩個不同的數據源設置了一個Spring Data項目,並試圖從單個@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一次僅連接到一個數據庫-這可能是我的控制器根據調用哪種方法(在抽象到Service Impl等)在數據庫之間進行選擇的最佳方法。
沒有什么可以阻止您依賴兩個JdbcTemplate
。 您沒有顯示其余的代碼,但是您可以依賴於兩個數據源並在需要時初始化JdbcTemplate
,因為它是實用程序類,而不是可靠的資源。
傳遞兩個數據源的最簡單方法是使其明確。
<bean id="myBean" class="my.Controller">
<property name="dataSource1" ref="ds1"/>
<property name="dataSource2" ref="ds2"/>
</bean>
不過,您也可以使用@Qualifier
,如文檔中所示。
@Controller
public class Controller {
...
@Autowired
@Qualifier("ds1")
private DataSource dataSource1;
@Autowired
@Qualifier("ds2")
private DataSource dataSource2;
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.