package Ġio . github . rc ar lo sd as il va . w enger . feature . context Ċ Ċ import Ġcom . google . common . base . Enums Ċ import Ġio . github . rc ar lo sd as il va . k its . sys . System Helper Ċ import Ġio . github . rc ar lo sd as il va . w enger . common . constant . General Constant Ċ import Ġio . github . rc ar lo sd as il va . w enger . feature . config . App Properties Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . springframework . beans . factory . Initializing Bean Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . context . Context Id ApplicationContext Initializer Ċ import Ġorg . springframework . boot . context . properties . Enable Configuration Properties Ċ import Ġorg . springframework . context . Configurable ApplicationContext Ċ import Ġorg . springframework . core . env . Environment Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ /** Ċ Ġ* Ġ çİ¯å¢ĥ Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ De an ĠZ hao ]( mailto : rc ar lo sd as il va @ qq . com ) Ċ Ġ*/ Ċ @ Component Ċ @ Enable Configuration Properties ( value Ġ= Ġ[ App Properties :: class ]) Ċ class ĠEnvironment Handler Ġ@ Autowired Ġconstructor ( ĊĠ Ġprivate Ġval Ġenv : ĠEnvironment , ĊĠ Ġprivate Ġval Ġapp Properties : ĠApp Properties Ċ ) Ġ: ĠContext Id ApplicationContext Initializer (), ĠInitial izing Bean Ġ{ ĊĊĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠ Ġlateinit Ġvar Ġruntime Profile : ĠRuntime Profile ĊĠ Ġlateinit Ġvar Ġapplication Name : ĠString ĊĠ Ġlateinit Ġvar Ġtemp Dir : ĠString ĊĊĠ Ġoverride Ġfun Ġinitialize ( application Context : ĠConfigur able ApplicationContext ) Ġ{ ĊĠĠĠ Ġapplication Name Ġ= Ġapplication Context . application Name Ġ?: ĠGeneral Constant . DEFAULT _ APPLICATION _ NAME ĊĠĠĠ Ġsuper . initialize ( application Context ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġafter Properties Set () Ġ{ ĊĠĠĠ Ġval Ġprofiles Ġ= Ġenv . active Profiles ĊĠĠĠ Ġif Ġ( profiles . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠ Ġlogger . warn Ġ{ Ġ"[ Environment ] Ġ- Ġæ ¿ Ģ æ´» äºĨ å¤ļä¸ª Profile ï¼Į æī§è¡Į çİ¯å¢ĥ å°Ĩ ä¼ļ æĺ¯ ç¬¬ä¸Ģä¸ª æ¿Ģ æ´» çļĦ é¢Ħ ç½® çİ¯å¢ĥ ï¼Į å»ºè®® ä½¿çĶ¨ åįķ ä¸ª Profile " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġr ps Ġ= Ġprofiles . map NotNull Ġ{ ĠEnums . get If Present ( Runtime Profile :: class . java , Ġit . toUpperCase ()). or Null () Ġ} ĊĊĠĠĠ Ġruntime Profile Ġ= Ġif Ġ( r ps . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġlogger . warn Ġ{ Ġ"[ Environment ] Ġ- Ġ æľª æī¾åĪ° é¢Ħ ç½® çİ¯å¢ĥ ï¼Ī devel , Ġci , Ġtest , Ġpre pro , Ġproduction ï¼ī " Ġ} ĊĠĠĠĠĠ ĠRuntime Profile . CUSTOM _ DEFINED ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġr ps [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthis . temp Dir Ġ= Ġapp Properties . temp Dir Ġ?: ĠSystem Helper . temp Dir () ĊĠĠĠ Ġlogger . info Ġ{ Ġ"[ Environment ] Ġ- Ġä½¿çĶ¨ ä¸´ æĹ¶ çĽ®å½ķ ï¼ļ $ temp Dir " Ġ} ĊĊĠĠĠ ĠEnvironment Handler Holder . Companion . self Ġ= Ġthis ĊĠ Ġ} ĊĊĠ Ġclass ĠEnvironment Handler Holder Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġinternal Ġlateinit Ġvar Ġself : ĠEnvironment Handler ĊĊĠĠĠĠĠ Ġfun Ġget (): ĠEnvironment Handler Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġself ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* Ġ ç³»ç»Ł è¿Ĳè¡Į æĹ¶ çİ¯å¢ĥ Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ De an ĠZ hao ]( mailto : rc ar lo sd as il va @ qq . com ) Ċ Ġ*/ Ċ enum Ġclass ĠRuntime Profile Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* Ġ å¼Ģåıĳ çİ¯å¢ĥ ĊĠĠ Ġ*/ ĊĠ ĠDE VEL , ĊĠ Ġ/** ĊĠĠ Ġ* Ġ æĮģ ç»Ń éĽĨ æĪĲ çİ¯å¢ĥ ĊĠĠ Ġ*/ ĊĠ ĠCI , ĊĠ Ġ/** ĊĠĠ Ġ* Ġæµ ĭ è¯ķ çİ¯å¢ĥ ĊĠĠ Ġ*/ ĊĠ ĠTEST , ĊĠ Ġ/** ĊĠĠ Ġ* Ġ é¢Ħ çĶŁäº§ çİ¯å¢ĥ ĊĠĠ Ġ*/ ĊĠ ĠPRE PRO , ĊĠ Ġ/** ĊĠĠ Ġ* Ġ çĶŁäº§ çİ¯å¢ĥ ĊĠĠ Ġ*/ ĊĠ ĠPRO DU CTION , ĊĠ Ġ/** ĊĠĠ Ġ* Ġ èĩªå®ļä¹ī ĊĠĠ Ġ*/ ĊĠ ĠCUSTOM _ DEFINED Ċ }