/**
* 連接失效檢測相關
*/
// 空閑時進行連接測試,會啟動異步evict線程進行失效檢測
setTestWhileIdle(true);
// 連接的空閑的最長時間,需要testWhileIdle為true,默認5分鍾
setMinEvictableIdleTimeMillis(1000 * 60 * 5);
// 失效檢測時間,需要testWhileIdle為true,默認5分鍾
setTimeBetweenEvictionRunsMillis(1000 * 60 * 5);
// 每次檢查連接的數量,需要testWhileIdle為true
setNumTestsPerEvictionRun(100);
// 獲取連接時檢測連接的有效性
setTestOnBorrow(true);
// 返還連接時檢測連接的有效性
setTestOnReturn(false);
/**
* 連接池中連接數量相關
*/
// 每個key對應的池最大連接數
setMaxTotalPerKey(20);
// 總連接數
setMaxTotal(40);
// 每個key對應的連接池最小空閑連接數
setMinIdlePerKey(5);
// 每個key對應的連接池最大空閑連接數
setMaxIdlePerKey(20);
/**
* 連接池無可用連接時相關
*/
// 設置為true時,池中無可用連接,borrow時進行阻塞;為false時,當池中無可用連接,拋出NoSuchElementException異常
setBlockWhenExhausted(true);
// 多個任務需要borrow連接時,阻塞時是否采用公平策略,為true時采用,按照先申請先獲得的策略進行borrow操作
setFairness(true);
// 最大等待時間,當需要borrow一個連接時,最大的等待時間,如果超出時間,拋出NoSuchElementException異常,-1為不限制時間
setMaxWaitMillis(-1);