package Ġsample . context . orm Ċ Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġorg . springframework . boot . context . properties . Configuration Properties Ċ import Ġorg . springframework . boot . jdbc . DataSource Builder Ċ import Ġorg . springframework . boot . jdbc . Database Driver Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġjava . util .* Ċ import Ġjavax . sql . DataSource Ċ Ċ /** Ċ Ġ* ĠDataSource çĶŁæĪĲ çĶ¨ ãģ® è¨Ńå®ļ ãĤ¯ãĥ©ãĤ¹ ãĢĤ Ċ Ġ* Ġ< p > ç¶ Ļ æī¿ åħĪ ãģ§ @ Configuration Properties å®ļç¾© ãĤĴè¡Į ãģ£ãģ¦ application . yml ãģ¨ ç´ Ĳ ä»ĺ ãģĹãģ¦ãģıãģłãģķãģĦ ãĢĤ Ċ Ġ* Ġ< p > ãĥĻãĥ¼ãĤ¹ å®Ł è£ħ ãģ« Hikari CP ãĤĴ åĪ©çĶ¨ ãģĹãģ¦ãģĦãģ¾ãģĻ ãĢĤ å¿ħè¦ģ ãģ« å¿ľ ãģĺ ãģ¦ è¨Ńå®ļ åı¯èĥ½ ãĥķãĤ£ ãĥ¼ãĥ« ãĥī ãĤĴ å¢ Ĺ ãĤĦ ãģĻ ãĤĪãģĨãģ« ãģĹãģ¦ãģıãģłãģķãģĦ ãĢĤ Ċ Ġ*/ Ċ open Ġclass ĠO rm DataSource Properties ( ĊĠĠĠĠĠĠĠ Ġ/** Ġãĥ ī ãĥ©ãĤ¤ ãĥĲ ãĤ¯ãĥ©ãĤ¹ åĲįç§° Ġ( Ġ æľª è¨Ńå®ļ æĻĤ ãģ¯ Ġurl Ġ ãģĭãĤī èĩªåĭķ çĻ»éĮ² Ġ) Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġdriver ClassName : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġurl : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġusername : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġpassword : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġprops : ĠProperties Ġ= ĠProperties (), ĊĠĠĠĠĠĠĠ Ġ/** Ġ æľĢ ä½İ æİ¥ç¶ļ ãĥĹ ãĥ¼ãĥ ª ãĥ³ãĤ° æķ° Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġmin Idle : ĠInt Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ/** Ġ æľĢå¤§ æİ¥ç¶ļ ãĥĹ ãĥ¼ãĥ ª ãĥ³ãĤ° æķ° Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġmax PoolSize : ĠInt Ġ= Ġ 2 0 , ĊĠĠĠĠĠĠĠ Ġ/** ĠãĤ³ ãĥį ãĤ¯ ãĤ·ãĥ§ãĥ³ çĬ¶æħĭ ãĤĴ ç¢ºèªį ãģĻãĤĭ æĻĤ ãģ¯ Ġtrue Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġvalidation : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġ/** ĠãĤ³ ãĥį ãĤ¯ ãĤ·ãĥ§ãĥ³ çĬ¶æħĭ ç¢ºèªį ãĤ¯ ãĤ¨ ãĥª Ġ( Ġ æľª è¨Ńå®ļ æĻĤ ãģĭ ãģ¤ ĠDatabase ĠãģĮ å¯¾ å¿ľ ãģĹãģ¦ãģĦãĤĭ æĻĤ ãģ¯ èĩªåĭķ è¨Ńå®ļ Ġ) Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġvalidation Query : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . java Class . simple Name . replace (" Properties ". to Regex (), Ġ"") ĊĊĠĠĠ Ġopen Ġfun ĠdataSource (): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠDataSource Builder . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ( Hikari DataSource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. driver ClassName ( this . driver ClassName ()). url ( this . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. username ( this . username ). password ( this . password ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ġas ĠH ikari DataSource ĊĠĠĠĠĠĠĠ ĠdataSource . minimum Idle Ġ= Ġmin Idle ĊĠĠĠĠĠĠĠ ĠdataSource . maximum PoolSize Ġ= Ġmax PoolSize ĊĠĠĠĠĠĠĠ Ġif Ġ( validation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource . connection Test Query Ġ= Ġvalidation Query () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠdataSource . pool Name Ġ= Ġname ĊĠĠĠĠĠĠĠ ĠdataSource . dataSource Properties Ġ= Ġprops ĊĠĠĠĠĠĠĠ Ġreturn ĠdataSource ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdriver ClassName (): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( driver ClassName . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Driver . from Jdbc Url ( url ). driver ClassName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġdriver ClassName . or Empty () ĊĊĠĠĠ Ġprivate Ġfun Ġvalidation Query (): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( validation Query . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Driver . from Jdbc Url ( url ). validation Query ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġvalidation Query . or Empty () Ċ }