zyskm用夢想丈量人生,用奔跑丈量激情

          導航

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統計

          公告

          zyskm,zys是鄭勇勝的拼音簡寫,km公里的意思。
          以前曾跑過一段時間馬拉松,知道了這句名言“用夢想丈量人生,用奔跑丈量激情”,丈量的單位用公里km。

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          基于spring的動態數據源

          基于spring的動態數據源
          項目過程中遇到這樣一個需求,系統啟動后動態設置數據源,不同用戶登錄系統后訪問的數據庫不同。
          好在所有書庫結構一致。
          用spring 的AbstractRoutingDataSource解決了這個問題。
          原理如圖:

          項目采用的是hibernate,直接在spring.xml設置sessionFactory的dataSource屬性為動態數據源即可。
          因為項目所有數據庫結構都一致,為了避免每次設置數據源的時候要改一堆參數,修改了spring AbstractRoutingDataSource類增加了一個getTargetDataSources方法,獲取當前數據源詳細信息,在其基礎上修改數據庫名稱、用戶名、密碼即可,不用每次設置一堆參數。
          Map<String,ComboPooledDataSource> targetDataSources=dynamicDataSource.getTargetDataSources();
                          
          if(targetDataSources==null){
                              targetDataSources
          =new HashMap<String, ComboPooledDataSource>();
                              targetDataSources.put(
          "baseDataSource", baseDataSource);
                          }

                          targetDataSources.put(dataSourceName, subSystemDataSource);
                          dynamicDataSource.setTargetDataSources(targetDataSources);
                          dynamicDataSource.afterPropertiesSet();
          另外,設置AbstractRoutingDataSource參數后要調用afterPropertiesSet()方法,spring容器才會進行加載操作。

          在動態設置數據源方面,可以通過兩種方式實現:
          1.在action(項目使用struts)中進行設置,可以確保在每個servlet線程中數據源是一致的。
          2.以aop方式,對service方法進行攔截,根據需求設置不同數據源。

          posted on 2011-10-24 17:11 zyskm 閱讀(3583) 評論(2)  編輯  收藏

          評論

          # re: 基于spring的動態數據源 2011-10-25 08:22 tbw

          很好的想法   回復  更多評論   

          # re: 基于spring的動態數據源 2012-09-07 15:31 wys

          方案非常不錯,不知道能不能把相關代碼共享一下,目前也遇到類似的需求希望能夠幫助解決一下,謝謝了,Q郵箱:471372495@qq.com  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 锡林浩特市| 沁水县| 康保县| 焦作市| 安宁市| 温泉县| 敦煌市| 波密县| 新巴尔虎左旗| 双柏县| 黑山县| 平泉县| 平原县| 通城县| 雷波县| 天峨县| 云林县| 高陵县| 敦煌市| 新邵县| 本溪市| 西乡县| 惠来县| 汉川市| 泰顺县| 深水埗区| 定陶县| 阿巴嘎旗| 孟连| 永定县| 博乐市| 安福县| 土默特右旗| 建始县| 藁城市| 绥棱县| 泌阳县| 化州市| 华宁县| 青龙| 商洛市|