在 kotlin 中声明全局变量默认为 属性 值

declare global variable in kotlin defaulted to a property value

我正在尝试直接从 application.yml:

加载 kotlin 中的全局变量
telegram:
  token: foo

为了实现这一点,在我的 class 中,我试过这个:

@Value("${telegram.token}")
val botToken: String

但它抛出一个错误,提示我需要初始化 属性。 (例如,这不会引发错误,但这不是我预期的行为):

@Value("${telegram.token}")
val botToken: String = ""

我想要的是将配置值 (foo) 注入到这个常量 (botToken) 中。

首先,您似乎可以使用 @Property(name = "telegram.token")

然后我会尝试

@Property(name = "telegram.token")
lateinit var token: String
    private set

将它作为参数添加到包含 属性:

的 bean 的构造函数中
class WhateverSpringManagedBeanClass(
    @Value("${telegram.token}") private val botToken: String
)

或尝试以下操作(这使 botToken 可变):

@Value("${telegram.token}")
lateinit var botToken: String