[英]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 以及MyService
是MyServiceB
构造函数的参数的事实,告诉 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.