dependencies {
implementation("io.github.microutils:kotlin-logging:1.7.7")
kapt("io.guthix.injekt:injekt-irx:2.1.1")
}
kotlin
@Module
class AppModule {
@Provides
fun provideLogger(): Logger = KotlinLogging.logger {}
@Provides
@Singleton
fun provideDatabase(logger: Logger): Database = Database(logger)
}
kotlin
class MyService {
@Inject
lateinit var logger: Logger
@Inject
lateinit var database: Database
fun doSomething() {
logger.info("Doing something...")
database.saveData("Some data")
}
}
kotlin
fun main() {
Injekt.addModules(AppModule)
val myService = Injekt.get<MyService>()
myService.doSomething()
}