<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zyskm用夢(mèng)想丈量人生,用奔跑丈量激情

    基于spring的動(dòng)態(tài)數(shù)據(jù)源

    基于spring的動(dòng)態(tài)數(shù)據(jù)源
    項(xiàng)目過(guò)程中遇到這樣一個(gè)需求,系統(tǒng)啟動(dòng)后動(dòng)態(tài)設(shè)置數(shù)據(jù)源,不同用戶(hù)登錄系統(tǒng)后訪問(wèn)的數(shù)據(jù)庫(kù)不同。
    好在所有書(shū)庫(kù)結(jié)構(gòu)一致。
    用spring 的AbstractRoutingDataSource解決了這個(gè)問(wèn)題。
    原理如圖:

    項(xiàng)目采用的是hibernate,直接在spring.xml設(shè)置sessionFactory的dataSource屬性為動(dòng)態(tài)數(shù)據(jù)源即可。
    因?yàn)轫?xiàng)目所有數(shù)據(jù)庫(kù)結(jié)構(gòu)都一致,為了避免每次設(shè)置數(shù)據(jù)源的時(shí)候要改一堆參數(shù),修改了spring AbstractRoutingDataSource類(lèi)增加了一個(gè)getTargetDataSources方法,獲取當(dāng)前數(shù)據(jù)源詳細(xì)信息,在其基礎(chǔ)上修改數(shù)據(jù)庫(kù)名稱(chēng)、用戶(hù)名、密碼即可,不用每次設(shè)置一堆參數(shù)。
    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();
    另外,設(shè)置AbstractRoutingDataSource參數(shù)后要調(diào)用afterPropertiesSet()方法,spring容器才會(huì)進(jìn)行加載操作。

    在動(dòng)態(tài)設(shè)置數(shù)據(jù)源方面,可以通過(guò)兩種方式實(shí)現(xiàn):
    1.在action(項(xiàng)目使用struts)中進(jìn)行設(shè)置,可以確保在每個(gè)servlet線程中數(shù)據(jù)源是一致的。
    2.以aop方式,對(duì)service方法進(jìn)行攔截,根據(jù)需求設(shè)置不同數(shù)據(jù)源。

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

    評(píng)論

    # re: 基于spring的動(dòng)態(tài)數(shù)據(jù)源 2011-10-25 08:22 tbw

    很好的想法   回復(fù)  更多評(píng)論   

    # re: 基于spring的動(dòng)態(tài)數(shù)據(jù)源 2012-09-07 15:31 wys

    方案非常不錯(cuò),不知道能不能把相關(guān)代碼共享一下,目前也遇到類(lèi)似的需求希望能夠幫助解決一下,謝謝了,Q郵箱:471372495@qq.com  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 在线永久免费的视频草莓| 亚洲成人一级电影| 深夜A级毛片视频免费| 免费无码又爽又刺激高潮| 亚洲国产成人精品激情| 国产精品美女午夜爽爽爽免费| 久久精品国产亚洲AV忘忧草18 | 在线a毛片免费视频观看| 亚洲综合国产成人丁香五月激情| 免费av欧美国产在钱| 亚洲一久久久久久久久| 国产成人青青热久免费精品 | 久久久久亚洲AV无码专区体验| 污污网站免费观看| 91午夜精品亚洲一区二区三区| 波多野结衣中文字幕免费视频| 亚洲日韩一中文字暮| 亚洲国产成人久久精品99| h片在线播放免费高清| 亚洲成a人片在线观看无码 | 亚洲av无码片在线观看| 日韩黄色免费观看| av片在线观看永久免费| 亚洲五月激情综合图片区| 国产美女在线精品免费观看| 免费在线观看自拍性爱视频| 亚洲无码在线播放| 亚洲免费在线观看视频| 在线观看亚洲专区| 亚洲av无码潮喷在线观看| 99久久免费精品国产72精品九九 | 中文在线免费视频| 亚洲综合久久久久久中文字幕| 免费黄网在线观看| 成人无码a级毛片免费| 亚洲一级片在线播放| 亚洲一本大道无码av天堂| 亚洲成年人免费网站| 最新亚洲人成网站在线观看| 亚洲AV日韩AV永久无码久久 | 成年大片免费高清在线看黄|