使用@Autowired和@Component时,Get-lalateinit属性未初始化错误



这个AwsSqsUtil类有一个Component注释,当我想在我的主函数中使用它时,我得到了错误"科特林。UninitializedPropertyAccessException:lateinit属性awsSqsUtil尚未初始化,如何解决此问题?

">

@Component
class AwsSqsUtil {
fun sendMessageToSqs() {
}
}
@Autowired
private lateinit var awsSqsUtil: AwsSqsUtil
awsSqsUtil.sendMessageToSqs()

您的变量声明究竟在哪里?它是在一个组件/服务/控制器等类中,还是只是在顶层?

我希望你的答案是最高级别或普通级别,因为那是你通常会遇到的情况。

解决方案是在春季启动应用程序中单独保留主类。如果你想在启动时运行一些东西,你可以创建一个有趣的(在一个合适的弹簧容器内(,用@PostConstruct进行注释。通过这种方式,它将在spring应用程序真正启动后运行,并且您可以随意自动布线。

最新更新