ibatis也能用proxool連接池
在眾多項目中使用過諸多連接池,如DBCP,PROXOOL等,發現還是proxool連接池好使,因為proxool連接池兼容性好,性能穩定。
在某次項目中,由于歷史版本問題,使用了兩個連接池,一個是proxool連接池,一個是IBATIS自由的SIMPLE連接池,但是在連接一個專有數據庫時,卻發現proxool可以創建連接池,而IBATIS的SIMPLE卻不能建立連接(報經典的錯The network apdapter counld‘t estenbilished the connection。。。)。后來將IBATIS改用DBCP,也不行。就想要是IBATIS能用proxool連接池就好了,查看IBATIS文檔,文檔上說IBATIS使用的連接池可以自己制定,由于項目緊,來不急了(等以后有時間了再研究一下),后來想想,能不能用spring把proxool連接池和SIMPLE連接池整合起來,一番搜索后,結果如下:
1.利用spring將IBATIS和proxool連接池整合起來,使IBATIS輕松使用proxool連接池。
Spring 配置如下:
比較有意思的是SqlMapClientFactoryBean是sqlMapClient的工廠,所以可以直接從spring得到sqlMapClient。
因此只需要將原代碼中從IBATIS構造sqlMapClient,改為從spring獲取即可。
如原代碼片段為:
static {
try {
Reader reader = Resources.getResourceAsReader("com/bw/bst/db/SqlMapConfig.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// Fail fast.
throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
}
}
改為:
static {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"},SqlMapUtil.class);
sqlMapper= (SqlMapClient) context.getBean("sqlMapClient");
}
輕松又省力的使IBATIS使用了proxool連接池。
【編輯推薦】