当前位置: 首页 > 知识库问答 >
问题:

延迟属性 S 尚未初始化

鲜于德业
2023-03-14

我想在Spring靴中通过kotlin在另一个类中注入一个单例。

S.kt

 @Singleton
 @Component
 class S(
    private val userService: UserService,
    val companyRepo: CompanyRepo
 )

WorkingGroup.kt

    class WorkingGroup(
        override val name: String = "",
        override val desc: String = ""
    ) : Csv() {

        fun isCompatible(ct2: WorkingGroup): Boolean = this == ct2

        companion object : ICsvEnumCompanion<WorkingGroup> {

            @Inject
            private lateinit var s: S

           override val VALUES: List<WorkingGroup>
            by lazy {
                val details = s.user().company.details ?: CompanyDetails()
                details.workingGroups.map { WorkingGroup(it.name, it.desc) }
            }
    }
}

通过这段代码,我得到以下错误:

Caused by: org.zalando.problem.DefaultProblem: Internal Server Error: lateinit property s has not been initialized

我搜索了这个错误,发现了一些类似的结果,但是问题没有解决。< br >在kotlin中,如何在伴随对象中注入服务?

共有1个答案

卢枫涟
2023-03-14

为了让Spring注入到伴侣对象中,您需要为伴侣对象之外的字段创建一个setter。WorkingGroup需要是Spring托管bean才能让Spring自动装配它(注入依赖项)。

@Component
class WorkingGroup(
    override val name: String = "",
    override val desc: String = ""
) : Csv() {

    fun isCompatible(ct2: WorkingGroup): Boolean = this == ct2

    companion object : ICsvEnumCompanion<WorkingGroup> {

        private lateinit var s: S

       override val VALUES: List<WorkingGroup>
        by lazy {
            val details = s.user().company.details ?: CompanyDetails()
            details.workingGroups.map { WorkingGroup(it.name, it.desc) }
        }
   }

   @Autowired
   fun setS(value: S) {
      s = value;
   }
}
 类似资料:
  • 这是我的主要功能 我在我的主类中调用它,并且一切正常,我可以得到响应。 当我想为它编写测试时,我遇到了错误“kotlin.UninitializedPropertyAccessException:lateinit属性客户端尚未初始化”,有人能帮我吗?"

  • 有人以前有过类似的问题吗? 如何声明init()的默认变量值? 下面是我的代码示例, 然后在下面抛出异常: 起因:科特林。UninitializedPropertyAccessException:late init属性emailDir尚未初始化 任何解决方案都可以共享?

  • Json服务器数据显示,在使用retrofit2和rxjava2的android中,当参数传递给inteface时,会出现错误。 接口

  • 我不知道这是怎么回事 主要活动 我遇到了这个问题 2022-03-18 09:18:27.393 13874-13874/com。实例githubuser2 E/AndroidRuntime:致命异常:主进程:com。实例githubuser2,PID:13874 java。lang.RuntimeException:无法启动活动组件信息{com.example.githubuser2/com.e

  • 我有一个类,我注入到ViewModel ViewModel工厂,当在活动中的onCreate方法中初始化视图模型时,它说传递的值没有初始化。 下面是我的代码 我对Kotlin很陌生,所以尝试过调试,但在这个问题上卡住了。 这是Mainactive代码: 我的ViewModelFactory: 我的班级回购: 这是我收到的错误:

  • 我正在尝试使用Spring-boot+Vaadin创建一个web项目,并且希望使用spring-data-jpa和hibernate从PostgreSQL数据库中获取数据。 在我的Vaadin看来,我尝试自动连接我的服务类,但我总是得到null,而且eror堆栈跟踪没有告诉我原因。 数据库得我得配置: 视图和UI: pom.xml: 我的服务: 更新的解决方案: