package Ġapp shop . util Ċ Ċ import Ġapp shop . modules . sys . dao .* Ċ import Ġapp shop . modules . sys . service .* Ċ import Ġapp shop . modules . sys . service . impl .* Ċ import Ġcom . mysql . cj . jdbc .* Ċ import Ġcom . zaxxer . hikari .* Ċ import Ġio . lett uce . core . Redis Client Ċ import Ġio . lett uce . core . api . State ful Redis Connection Ċ import Ġio . lett uce . core . api . async . Redis Async Commands Ċ import Ġorg . kode in . di .* Ċ import Ġorg . kt orm . database .* Ċ Ċ import Ġkotlin . reflect . jvm .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġwith ĠIntelliJ ĠIDEA Ċ Ġ* ĠUSER : jin Ċ Ġ* ĠCLASS NAME : ĠDI Ċ Ġ* ĠDATE : Ġ 2 0 2 1 / 3 / 7 Ċ Ġ* ĠTIME : Ġ 2 3 : 0 2 Ċ Ġ* ĠJDK Ġ 1 . 8 Ċ Ġ*/ Ċ val Ġtotal DI = ĠDI . lazy { ĊĠĠĠ Ġimport ( conn DI , true ) ĊĠĠĠ Ġimport ( dao DI , true ) ĊĠĠĠ Ġimport ( service DI , true ) Ċ } Ċ Ċ val Ġconn DI Ġ= ĠDI . Module (" conn DI "){ ĊĠĠĠ Ġbind < Hikari DataSource >() Ġwith Ġsingleton Ġ{ ĊĠĠĠĠĠĠĠ ĠH ikari DataSource ( HikariConfig (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjdbc Url Ġ= Ġ" jdbc : mysql :// localhost : 3 3 0 6 / ktor ? server Timezone = H ong k ong " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver ClassName Ġ= ĠDriver :: class . jvm Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġ" j iny ue f eng 1 2 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" root " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaximum PoolSize = 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Idle = 1 0 ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġbind < Database >() Ġwith Ġsingleton Ġ{ ĠDatabase . connect ( dataSource Ġ= Ġinstance < Hikari DataSource >()) Ġ} Ċ // ĠĠĠ Ġbind < Redis son Client >() Ġwith Ġsingleton Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠConfig (). apply Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġuse Single Server (). address =" redis :// 1 2 7 . 0 . 0 . 1 : 6 3 7 9 " Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ ĠRedis son . create ( config ) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġbind < Redis Async Commands < String , ĠString >>() Ġwith Ġsingleton Ġ{ ĊĠĠĠĠĠĠĠ ĠRedis Client . create (" redis :// 1 2 7 . 0 . 0 . 1 : 6 3 7 9 "). connect (). async () ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġdao DI Ġ= ĠDI . Module (" dao DI ") Ġ{ ĊĠĠĠ Ġbind < Auth User Dao >() Ġwith Ġsingleton Ġ{ ĠAuth User Dao () Ġ} ĊĠĠĠ Ġbind < Auth Role Dao >() Ġwith Ġsingleton Ġ{ ĠAuth Role Dao () Ġ} ĊĠĠĠ Ġbind < Auth UserRole Bind Dao >() Ġwith Ġsingleton Ġ{ ĠAuth UserRole Bind Dao () Ġ} ĊĠĠĠ Ġbind < Auth Resource Dao >() Ġwith Ġsingleton Ġ{ ĠAuth Resource Dao () Ġ} ĊĠĠĠ Ġbind < Auth Role Resource Bind Dao >() Ġwith Ġsingleton Ġ{ ĠAuth Role Resource Bind Dao () Ġ} Ċ Ċ } Ċ val Ġservice DI Ġ= ĠDI . Module (" service DI ") Ġ{ ĊĠĠĠ Ġbind < Account Service >() Ġwith Ġsingleton Ġ{ ĠAccount ServiceImpl () Ġ} ĊĠĠĠ Ġbind < Resource Service >() Ġwith Ġsingleton Ġ{ ĠResource ServiceImpl () Ġ} ĊĠĠĠ Ġbind < Role Service >() Ġwith Ġsingleton Ġ{ ĠRole ServiceImpl () Ġ} Ċ } Ċ val Ġdb Ġby Ġtotal DI . newInstance Ġ{ Ġinstance < Database >() Ġ}