[英]Kotlin + SpringBoot : DI lateinit property service has not been initialized
[英]Kotlin property not initialized, but why?
我们正在Kotlin中编写内部DSL。 然后我们从Java代码中使用它。 我们看到DSL中定义的对象尚不可用。 因此,出现了一个问题:为什么包属性未初始化?
因此,简化的情况是:
val myObject = dsl {
...
}
和DSL:
class Dsl() {
companion object {
val stored = mutableListOf<Dsl>()
fun add(added: Dsl) {
stored += added
}
}
}
fun dsl(init: Dsl.() -> Unit) {
val dsl = Dsl()
dsl.init()
Dsl.add(dsl) // Intentional side effect to simplify DSL definition
}
使用Java的DSL:
public class ExpectMyObject {
@Test
public void testMyObjectLoaded() {
Assert.assertEquals(1, Dsl.Companion.getStored().size)
}
}
我希望在启动JVM时初始化包属性。 但是测试失败。 我在俯视什么?
你需要参考同一文件所界定的东西 val myObject
,直接或间接地从测试。 否则将不会加载其生成的类。 例如
@Test
public void testMyObjectLoaded() {
your.package.FileNameKt.getMyObject();
Assert.assertEquals(1, Dsl.Companion.getStored().size);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.