第一點 要配置資料來源 資料來源包括: 資料來源連線資訊,資料來源的類支援。
配置方式有兩種 :
1 直接在xml中配置:
2、在類檔案中實現datasource的支援類,並設定資料來源鏈結資訊。
package common.jdbc.datasource;
import org.apache.commons.lang.stringutils;
import org.springframework.beans.factory.factorybean;
import org.springframework.beans.factory.initializingbean;
import play.play;
import com.jolbox.bonecp.bonecpdatasource;
public class bonecpdatasourcefactorybean implements factorybean, initializingbean
@override
public class<?> getobjecttype()
@override
public boolean issingleton()
@override
public void afterpropertiesset() throws exception
public int getintvalue(string config, int de****tvalue)catch (exception e)
} return de****tvalue;
}}
@repository("testdao")
public class testdao extends jdbcdaosupport
});return list;
}
如果使用第三方的持久層中介軟體,比如mybatis ,則將datasource制定給sqlsessionfactory。
第二點 spring事物的配置,從啟動的順序上來講,
首先:開啟事務,需要指定事務管理者
事務管理者 需要制定事務管理的類 以及 作用資料來源
此外 可以對事務管理者 提供事務的傳播屬性配置。
定義事務傳播屬性 可以通過註解的方式 也可以通過配置檔案
———————————————————分割線 動態配置資料來源及選擇 原理——————————————————
核心是import org.springframework.jdbc.datasource.lookup.abstractroutingdatasource;
這個類實現了 對資料來源的動態管理 不在詳細解讀原始碼,只說實現原理。
import org.springframework.jdbc.datasource.lookup.abstractroutingdatasource;
public class dynamicdatasource extends abstractroutingdatasource
}
為了執行緒的安全 我們需要乙個執行緒安全的map來訪問當前方法需要的 lookupkey。
在需要切換資料來源的時候 將需要的lookupkey存入map中。
如果需要用到事務,那麼資料來源的切換一定要放在事務開始之前。
這裡提供一種解決方案:
1在需要切換資料來源的方法上使用註解方式配置資料來源的lookupkey資訊。
2配置aop 通過註解切換資料來源。
2保證資料來源的aop優先順序,保證資料來源的切換在事務開啟之前。
具體配置如下:
註解資料來源
public class datasourceaspect implements methodbeforeadvice,afterreturningadvice
@override
public void before(method method, object args, object target)
throws throwable
else
}}
測試dao
@datasource(name=datasource.testdatasource1)
public listfindtest1()
參考文件 動態資料來源實現: spring 常用的資料庫鏈結配置
資料庫鏈結配置 hsqldb jdbc.driverclassname org.hsqldb.jdbcdriver jdbc.url jdbc hsqldb hsql localhost 9001 資料庫名稱 jdbc.username 使用者名稱 jdbc.password 密碼 mysql jd...
Spring 對資料庫操作
1.spring的資料庫訪問方式 提供了對jdbc,mybatis,hibernate等的支援。主要通過dao提供了如下的支援 a.提供了與平台無關的資料庫訪問異常體系 b.提供了資料訪問的模板,比如 jbdctemplate,jdbctemplate,hibernatetemplate c.提供了...
在Spring框架下對資料庫連線的配置資訊加密
現在有乙個專案,客戶要求在配置檔案中的資料庫連線資訊是密文的,當時還以為很是個簡單的事。但是這個由於專案使用到了spring框架,而對資料庫的連線資訊是在spring啟動時就裝入記憶體的,因此要在載入後對檔案進行解密,幾乎不太可能。後面分析了spring 的原始碼,發現spring屬性檔案的載入都是...