Már*_*ial 3 java spring static kotlin
我试图在 Kotlin 的静态字段中注入一个值,但我没有成功。
我知道一个 Java 的解决方法,那么在 Kotlin 中,这个 Java 代码的等价物是什么?
@Component
public class GlobalValue {
public static String DATABASE;
@Value("${mongodb.db}")
public void setDatabase(String db) {
DATABASE = db;
}
}
Run Code Online (Sandbox Code Playgroud)
以为这会奏效:
@Component
class GlobalValue {
companion object {
@JvmStatic
lateinit var database: String
@Value("\${myprop.testing2}") set
}
}
Run Code Online (Sandbox Code Playgroud)
但它没有,出于某种原因,可能是因为生成的 setter 是final,或者因为它通过Companion对象,我不知道。
这有效:
@Component
class GlobalValue {
companion object {
@JvmField
var database: String = "test"
}
@Value("\${myprop.testing2}")
fun setDatabase(db: String) {
database = db
}
}
Run Code Online (Sandbox Code Playgroud)
注意\in @Value- 这是因为否则我们会与语言本身发生冲突,这种结构已经存在。
此外,您需要指定一个默认值,这lateinit是不可能的@JvmField。
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |