我可以写一个使用自动布线的Spring bean的Kotlin扩展函数吗?

我试图创建一个扩展函数,其实现使用Spring bean。 通过在包的顶层定义扩展功能,似乎不可能做到这一点。 我试过这个:

@Component class Converter { companion object { @Autowired lateinit var transformer: Transformer fun Class1.convert(): Class2 { return Class2 (this, transformer.transform(someStringProperty)) } } } 

其中transform是将某个字符串转换为另一个字符串的函数,而Class1则是一些具有someStringProperty属性的类。 我希望其他类可以import pkg.Converter.Companion.convert ,然后可以使用x.convert() ,其中xClass1类型的对象。

语法工作,并在其他类中使用x.convert()编译罚款。 但在运行时会导致异常: kotlin.UninitializedPropertyAccessException: lateinit property transformer has not been initialized

它看起来像Spring不是自动装配的变量,因为它在一个伴侣对象,而不是一个实际的组件对象。

使用@Component注释伴随对象不起作用。

我不认为直接在Converter内移动Class1.convert会工作,因为然后使用x.convert()将需要一个Converter对象的实例,我不明白如何使用扩展函数语法来做到这一点。

有没有办法做到这一点,或者我不得不放弃扩展函数语法?