/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 Ġt we er le i ĠW ru ck Ġ+ ĠB uch me ier ĠG b R Ġ- Ġhttp :// www . t we er le i . de / Ċ Ġ* ĠĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĊ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġde . t we er le i . pl umber . worker . jdbc Ċ Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġorg . springframework . boot . context . properties . Configuration Properties Ċ import Ġorg . springframework . boot . jdbc . DataSource Builder Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjavax . sql . DataSource Ċ Ċ @ Service Ċ @ Configuration Properties ( prefix Ġ= Ġ" pl umber . jdbc ") Ċ class ĠJdbc Template Factory Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġdatasource : ĠMap < String , ĠString > ĊĊĠĠĠ Ġfun Ġcreate Jdbc Template ( pool Size : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġbuild DataSource ( Hikari DataSource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum PoolSize Ġ= Ġpool Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJdbc Template ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġ< T : ĠDataSource > Ġbuild DataSource ( type : ĠClass < T >) Ġ= ĊĠĠĠĠĠĠĠ ĠDataSource Builder . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdriver ClassName ( datasource [" driver ClassName "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl ( datasource [" url "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername ( datasource [" username "]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword ( datasource [" password "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () Ġas ĠT Ċ } Ċ