繁体   English   中英

Kotlin Spring:未解决的参考方法

[英]Kotlin Spring: Unresolved reference method

我在文件 A 中有以下类:

@Service
class MyService(
  private val myLoader: Loader
) {

  fun load(myKey: SomeKey) =
    myLoader.loadStuff(myKey)
}

我想在另一个文件 B 中调用该函数,如下所示:

MyService.load(myKey)

但是,load() 方法在 IntelliJ 中被标记为红色。 错误显示“未解析的引用:加载”,我不知道为什么。 当我输入MyService. IntelliJ 甚至建议加载方法。

我该如何解决这个问题?

由于您使用的是 Spring,因此应该调用MyService的另一个组件也必须是 Spring 管理的 Bean,以便它可以获取MyService bean。 您在文件 B 中的组件应如下所示:

@Service
class MyServiceB (
  private val myService: MyService
) {

  fun test(myKey: SomeKey) = myService.load(myKey)
}

注意@Service注释使其成为 Spring 管理的 Bean 以及MyServiceMyServiceB构造函数的参数的事实,告诉 Spring 必须注入类型为MyService的 Bean。


鉴于您有一个对象而不是一个类,您将必须执行以下操作:

object MyServiceB (
  lateinit var myService: MyService
) {

  fun test(myKey: SomeKey) = myService.load(myKey)
}
@Configuration
class MyServiceBConfiguration(private val myService: MyService) {

    @Bean
    fun myServiceB(): MyServiceB {
        return MyServiceB.also {
            it.myService = myService
        }
    }
}

这应该有效,但我绝对不推荐它。 这是一个黑客,绝对不是一个干净的解决方案。 考虑我最初的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM