国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于xml的Spring多數據源配置和使用

2019-11-14 14:58:22
字體:
來源:轉載
供稿:網友

上一篇講了《基于注解的SPRing多數據源配置和使用》,通過在類或者方法上添加@DataSource注解就可以指定某個數據源。這種方式的優點是控制粒度細,也更靈活。

缺點是當有些時候項目分模塊開發,可能某一個模塊只訪問同一個數據源,這種場景下如果使用注解的話就要在這個模塊下的所有dao接口都增加注解@DataSource,就會顯得繁瑣。

如果能直接在配置文件中一次性配置好,不用在每個類都添加注解豈不是更好?當然也是可以的^_^。

首先,再創建一個AOP切面DataSourceaspect2,代碼如下:

 1 public class DataSourceAspect2 { 2  3     /** 4      * 設置數據源dataSource1 5      *  6      * @param point 7      */ 8     public void setDataSource1(JoinPoint point) { 9         DynamicDataSourceHolder.setDataSource("dataSource1");10     }11 12     /**13      * 設置數據源dataSource214      * 15      * @param point16      */17     public void setDataSource2(JoinPoint point) {18         DynamicDataSourceHolder.setDataSource("dataSource1");19     }20 21 }

然后,配置這個切面的bean和攔截規則,xml配置如下:

 1 <bean id="dataSourceAspect2" class="com.test.context.datasource.DataSourceAspect2" /> 2 <aop:config>   3     <aop:aspect ref="dataSourceAspect2">  4         <!-- 攔截ds1模塊下的所有方法 --> 5         <aop:pointcut id="dataSource1Pointcut" expression="execution(* com.test.ds1.*.*(..))" /> 6         <!-- 攔截ds2模塊下的所有方法 -->         7         <aop:pointcut id=" dataSource2Pointcut" expression="execution(* com.test.ds2.*.*(..))" />  8         <!-- 攔截到ds1模塊后,在方法執行前先調用DataSourceAspect2里的setDataSource1設置數據源標識為dataSource1 --> 9         <aop:before pointcut-ref="dataSource1Pointcut" method="setDataSource1" /> 10         <!-- 攔截到ds2模塊后,在方法執行前先調用DataSourceAspect2里的setDataSource2設置數據源標識為dataSource2 -->11         <aop:before pointcut-ref="dataSource1Pointcut" method="setDataSource2" />  12     </aop:aspect>  13 </aop:config>  

這樣配置好之后,每個模塊下的dao就只訪問指定的數據源了。以后如果再增加數據源dataSource3,則在DataSourceAspect2類里增加一個方法setDataSource3(JoinPoint point),

并在上面的配置中增加類似的攔截規則就可以了。

假如使用了xml的方式配置了ds1模塊使用數據源dataSource1了,而ds1模塊下的某個方法a又需要訪問數據源dataSource2,這時可以單獨在a上使用注解@DataSource指定數據源。

也就是說注解和xml配置兩種方式可以同時使用(但不建議這樣),至于兩者哪個的優先級更高,可以通過配置aop:aspect里的order參數進行指定。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 来宾市| 清水河县| 延安市| 北流市| 绥滨县| 原阳县| 易门县| 河东区| 龙南县| 邛崃市| 星子县| 闽清县| 长岛县| 萨迦县| 延边| 邯郸市| 买车| 乐都县| 洪雅县| 利辛县| 昂仁县| 怀仁县| 武冈市| 囊谦县| 遵化市| 临澧县| 酒泉市| 高碑店市| 桂平市| 盈江县| 马公市| 新安县| 婺源县| 霍林郭勒市| 铜川市| 黄陵县| 广河县| 新绛县| 彭阳县| 房产| 呈贡县|