簡體   English   中英

具有多個數據源的Spring數據控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM