Ivan Podhornyi
07/23/2018, 11:16 AMkotlin.UninitializedPropertyAccessException: lateinit property sqls has not been initialized
gildor
07/23/2018, 4:40 PMIvan Podhornyi
07/24/2018, 9:28 AMpackage ktor.module
import io.ktor.application.Application
import io.ktor.application.call
import io.ktor.application.install
import io.ktor.features.*
import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.request.path
import io.ktor.response.respondText
import io.ktor.routing.get
import io.ktor.routing.routing
import main.kotlin.di.DaggerSQLComponent
import main.kotlin.di.SQLHolder
import org.slf4j.event.Level
import javax.inject.Inject
import javax.inject.Named
class App{
@Inject
@Named("BlaBlaBlaSQLHolder")
lateinit var sqlHolder: SQLHolder
init{
DaggerSQLComponent.create()
}
fun Application.rootModule() {
install(CallLogging) {
level = <http://Level.INFO|Level.INFO>
filter { call -> call.request.path().startsWith("/") }
}
routing {
get("/") {
call.respondText("HELLO WORLD! ${sqlHolder.testSQL}", contentType = ContentType.Text.Plain)
}
install(StatusPages) {
statusFile(HttpStatusCode.NotFound, filePattern = "error#.html")
}
}
}
}
And here is an DI module/component:
package main.kotlin.di
import dagger.Component
import dagger.Module
import dagger.Provides
import javax.inject.Named
import javax.inject.Singleton
@Component(modules = [SQLModule::class])
interface SQLComponent
@Module
class SQLModule{
@Provides
@Singleton
@Named("BlaBlaBlaSQLHolder")
fun povideTestSQLHolder() = SQLHolder()
}
class SQLHolder{
val testSQL = "Im a test sql"
}
gildor
07/24/2018, 10:02 AMDaggerSQLComponent.create().inject(this)
gildor
07/24/2018, 10:05 AMIvan Podhornyi
07/24/2018, 12:24 PM