C3P0 採用懶初始化:首次 getConnection() 觸發初始化。核心類職責劃分清晰:
對外介面,負責:
getConnection() 獲取連接。連接池「大管家」,管理生命週期,提供生態:
AdminTaskTimer。物理連接池對應類,邏輯委託給 ResourcePool 實現「池」操作。
BasicResourcePool 是 ResourcePool 實現,管理池中連接生命週期。夥伴 Manager 協助管理。包含任務:
ScatteredAcquireTask:創建連接(取代舊版 AcquireTask)。RemoveTask:銷毀連接。CullTask:檢測並銷毀過期連接。CheckIdleResourcesTask / AsyncTestIdleResourceTask:驗證空閒連接有效性。ComboPooledDataSource.getConnection()。C3P0PooledConnectionPoolManager 創建 C3P0PoolConnectionPool。C3P0PoolConnectionPool 委託 BasicResourcePool 初始化連接。BasicResourcePool 啟動上述任務維護池狀態。理解類職責分離,有助於排查連接池洩漏、超時、驗證失敗等問題。