Kotlin Autowired 问题 - lateinit (obv)

Posted

技术标签:

【中文标题】Kotlin Autowired 问题 - lateinit (obv)【英文标题】:Kotlin Autowired problems - lateinit (obv) 【发布时间】:2020-08-14 16:53:52 【问题描述】:

我对 kotlin 比较陌生,我无法理解 spring 自动装配

kotlin.UninitializedPropertyAccessException: lateinit property applicationContext has not been initialized

运行时出现上述错误:

@SpringBootTest
internal class MeterResourceAdapterTest () 

    @Autowired
    private lateinit var applicationContext: ApplicationContext

@Test
    fun toMeterReadingResourceList() 
        print(applicationContext.applicationName)
.....//I hope my implementation can be ignored

这里发生了什么?顺便说一句,为什么需要 lateinit,以及“它”何时被初始化?

【问题讨论】:

我只是尝试运行一个最小的示例来重现您的问题,但它运行良好。如果我不得不猜测,您的依赖项存在一些问题,导致无法正确创建 applicationContext。您应该提供更多信息 - 您的应用程序运行正常吗?你有测试属性吗? 【参考方案1】:

@Stav Shamir 的评论让我得出了这个决议。

我不能确定是什么原因造成的,但几乎可以肯定这与我的 pom.xml 中的 junit 的旧版本有关。当我通过初始化程序创建一个新项目时,然后将该 pom 的内容( )复制到我的 pom 中;一切顺利。

【讨论】:

以上是关于Kotlin Autowired 问题 - lateinit (obv)的主要内容,如果未能解决你的问题,请参考以下文章

Android开发学习之路--Kotlin之Android开发使用心得和注意事项

无法将元素添加到 kotlin 中可变列表的数组数组

Kotlin filterNotNull用于对象属性

Kotlin使用技巧之lateinit修饰符

ARouter踩坑指南

ARouter踩坑指南