可以将 Kotlin 对象用作 Spring bean 吗?

Can a Kotlin Object be used as a Spring bean?

Kotlin 允许定义单例对象。在 Spring 或 CDI 等依赖注入 (DI) 框架中,bean 的生命周期可以定义为单例。因此,将 Kotlin 对象声明为在 DI 容器中使用的 beans 似乎是明智的。

是否真的可以声明一个 Kotlin 对象,例如,作为 e Spring @Component?如果不是,为什么不呢?

嗯,它似乎工作正常(我不明白为什么它不起作用)。

话虽这么说,但我认为对于 kotlin 和 Spring,“单例”实际上在哪里的定义 'single' 是不一样的。 object 似乎在 1-per-ClassLoader 的基础上定义单例,其中 spring 的 'singleton' 是在 1-per-ApplicationContext 的基础上定义的。

大多数应用程序可能每个只使用 1 个,因此它们看起来完全相同,但如果您的应用程序使用两个或更多个 ClassLoader 或 ApplicationContext,它似乎最终会变得一团糟。

我的问题是:'what do you hope to gain by using an object instead of a class?'我真的看不出有什么好处(但我可能是错的),所以偏离每个人都使用的惯例似乎不是个好主意。