/* Ċ Ġ* Ġ ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ġor Ġmore Ċ Ġ* Ġ Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ġdistributed Ġwith Ċ Ġ* Ġ Ġthis Ġwork Ġfor Ġadditional Ġinformation Ġregarding Ġcopyright Ġownership . Ċ Ġ* Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ġto ĠYou Ġ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 Ġcom . sd ibt . k orm . adapt or . spring boot Ċ Ċ import Ġcom . sd ibt . k orm . core . db . K orm Sql Session Ċ import Ġcom . sd ibt . k orm . core . enums . DB MS Type Ċ import Ġcom . sd ibt . k orm . core . mapping . Base Name Convert Ċ import Ġcom . sd ibt . k orm . core . mapping . Camel Case Name Convert Ċ import Ġorg . springframework . beans . factory . Bean Name Aware Ċ import Ġorg . springframework . beans . factory . Factory Bean Ċ import Ġorg . springframework . beans . factory . Initializing Bean Ċ import Ġorg . springframework . context . ApplicationContext Ċ import Ġorg . springframework . context . ApplicationContext Aware Ċ import Ġorg . springframework . context . Application Event Ċ import Ġorg . springframework . context . Application Listener Ċ import Ġjavax . sql . DataSource Ċ Ċ /** Ċ Ġ* ĠUsage : Ċ Ġ* ĠUser : Ġwe ib ao h ui Ċ Ġ* ĠDate : Ġ 2 0 1 7 / 3 / 1 9 Ċ Ġ* ĠTime : Ġ 1 2 : 4 4 Ċ Ġ*/ Ċ class ĠK orm Sql SessionFactory Bean Ġ: ĠFactory Bean < K orm Sql Session >, ĊĠĠĠĠĠĠĠ ĠInitial izing Bean , ĊĠĠĠĠĠĠĠ ĠApplication Listener < Application Event >, ĊĠĠĠĠĠĠĠ ĠApplication Context Aware , ĠBean Name Aware Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġds : ĠDataSource ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġds Map : ĠMap < String , ĠDataSource > Ġ= Ġmap Of () ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpring ä¸Ĭä¸ĭ æĸĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġvar Ġapplication Context : ĠApplication Context ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBean åĲįç§° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġvar Ġbean Name : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġname Convert : ĠBase Name Convert Ġ= ĠCamel Case Name Convert () ĊĊĠĠĠ Ġfun ĠsetDefault DataSource ( ds : ĠDataSource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ds Ġ= Ġds ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset DataSource Map ( map : ĠMap < String , ĠDataSource >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ds Map Ġ= Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ObjectType (): ĠClass < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK orm Sql Session :: class . java ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġis Singleton (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠgetObject (): ĠK orm Sql Session Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsql Session Ġ= ĠK orm Sql Session ( DB MS Type . MySql , Ġname Convert ) ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® é»ĺè®¤ æķ°æį® æºĲ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . ds Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql Session . setDefault DataSource ( ds !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® å¤ļ æķ°æį® æºĲ ĊĠĠĠĠĠĠĠ Ġthis . ds Map . forEach Ġ{ Ġt , Ġu Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsql Session . add DataSource ( t , Ġu ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsql Session ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġafter Properties Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ds Ġ== Ġnull Ġ&& Ġds Map . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" è¯· ä½¿çĶ¨ set DataSource () ĠæĪĸ Ġadd DataSource () Ġ æ³¨åĨĮ æķ°æį® æºĲ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle Ġan Ġapplication Ġevent . ĊĠĠĠĠ Ġ* Ġ@ param Ġevent Ġthe Ġevent Ġto Ġrespond Ġto ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Application Event ( event : ĠApplication Event ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" event Ġ= Ġ${ event }") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe ĠApplication Context Ġthat Ġthis Ġobject Ġruns Ġin . ĊĠĠĠĠ Ġ* ĠNorm ally Ġthis Ġcall Ġwill Ġbe Ġused Ġto Ġinitialize Ġthe Ġobject . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInv oked Ġafter Ġpopulation Ġof Ġnormal Ġbean Ġproperties Ġbut Ġbefore Ġan Ġinit Ġcallback Ġsuch ĊĠĠĠĠ Ġ* Ġas Ġ[ org . springframework . beans . factory . Initializing Bean . after Properties Set ] ĊĠĠĠĠ Ġ* Ġor Ġa Ġcustom Ġinit - method . ĠInv oked Ġafter Ġ[ Resource Loader Aware . set Resource Loader ], ĊĠĠĠĠ Ġ* Ġ[ Application Event Publisher Aware . set Application Event Publisher ] Ġand ĊĠĠĠĠ Ġ* Ġ[ Message Source Aware ], Ġif Ġapplicable . ĊĠĠĠĠ Ġ* Ġ@ param Ġapplication Context Ġthe ĠApplication Context Ġobject Ġto Ġbe Ġused Ġby Ġthis Ġobject ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠApplication Context Exception Ġin Ġcase Ġof Ġcontext Ġinitialization Ġerrors ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠBe ans Exception Ġif Ġthrown Ġby Ġapplication Ġcontext Ġmethods ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġorg . springframework . beans . factory . Bean Initialization Exception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset ApplicationContext ( application Context : ĠApplication Context ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . application Context Ġ= Ġapplication Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġname Ġof Ġthe Ġbean Ġin Ġthe Ġbean Ġfactory Ġthat Ġcreated Ġthis Ġbean . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInv oked Ġafter Ġpopulation Ġof Ġnormal Ġbean Ġproperties Ġbut Ġbefore Ġan ĊĠĠĠĠ Ġ* Ġinit Ġcallback Ġsuch Ġas Ġ[ Initializing Bean . after Properties Set ] ĊĠĠĠĠ Ġ* Ġor Ġa Ġcustom Ġinit - method . ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġthe Ġname Ġof Ġthe Ġbean Ġin Ġthe Ġfactory . ĊĠĠĠĠ Ġ* Ġ* ĠNote Ġthat Ġthis Ġname Ġis Ġthe Ġactual Ġbean Ġname Ġused Ġin Ġthe Ġfactory , Ġwhich Ġmay ĊĠĠĠĠ Ġ* Ġ* Ġdiffer Ġfrom Ġthe Ġoriginally Ġspecified Ġname : Ġin Ġparticular Ġfor Ġinner Ġbean ĊĠĠĠĠ Ġ* Ġ* Ġnames , Ġthe Ġactual Ġbean Ġname Ġmight Ġhave Ġbeen Ġmade Ġunique Ġthrough Ġapp ending ĊĠĠĠĠ Ġ* Ġ* Ġ"# ..." Ġsuffix es . ĠUse Ġthe Ġ[ BeanFactory Utils . original Bean Name ] ĊĠĠĠĠ Ġ* Ġ* Ġmethod Ġto Ġextract Ġthe Ġoriginal Ġbean Ġname Ġ( without Ġsuffix ), Ġif Ġdesired . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Bean Name ( name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . bean Name Ġ= Ġname ĊĠĠĠ Ġ} Ċ } Ċ