我试图在Kotlin的静态字段中注入一个值,但我没有成功。
我知道Java的解决方法,所以在Kotlin中,这个Java代码的等价物是什么?
@Component
public class GlobalValue {
public static String DATABASE;
@Value("${mongodb.db}")
public void setDatabase(String db) {
DATABASE = db;
}
}
答案 0 :(得分:2)
认为这会奏效:
@Component
class GlobalValue {
companion object {
@JvmStatic
lateinit var database: String
@Value("\${myprop.testing2}") set
}
}
但由于某种原因,它不会因为生成的setter是final
,或者因为它通过Companion
对象,所以我不知道。
这适用于:
@Component
class GlobalValue {
companion object {
@JvmField
var database: String = "test"
}
@Value("\${myprop.testing2}")
fun setDatabase(db: String) {
database = db
}
}
请注意\
中的@Value
- 因为否则我们会与语言本身发生冲突,例如is already there.
此外,您需要指定默认值,lateinit
无法使用@JvmField
。
答案 1 :(得分:0)
理论上,以下内容应该是等效的:
@Component
class GlobalValue {
companion object {
@JvmField
lateinit var DATABASE: String
}
@Value("\${mongodb.db}")
fun setDatabase(db: String) {
DATABASE = db;
}
}