Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 注入静态场Kotlin/Spring Boot_Java_Spring_Static_Kotlin - Fatal编程技术网

Java 注入静态场Kotlin/Spring Boot

Java 注入静态场Kotlin/Spring Boot,java,spring,static,kotlin,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; } } 理论上,

我试图在Kotlin的静态字段中注入一个值,但没有成功

我知道Java的一种变通方法,所以在Kotlin中,这段Java代码的等价物是什么

@Component
public class GlobalValue {

    public static String DATABASE;

    @Value("${mongodb.db}")
    public void setDatabase(String db) {
        DATABASE = db;
    }
}

理论上,以下各项应是等效的:

@Component
class GlobalValue {
    companion object {
        @JvmField
        lateinit var DATABASE: String
    }

    @Value("\${mongodb.db}")
    fun setDatabase(db: String) {
        DATABASE = db;
    }
}

我想这会有用的:

@组件
类全局值{
伴星{
@JvmStatic
lateinit var数据库:字符串
@值(\${myprop.testing2})集
}
}
但由于某种原因,可能不是,因为生成的setter是
final
,或者因为它通过
Companion
对象,我不知道

这在以下方面起作用:

@组件
类全局值{
伴星{
@JvmField
var数据库:String=“test”
}
@值(\${myprop.testing2})
fun setDatabase(db:String){
数据库=db
}
}
请注意
\
中的
@Value
——这是因为否则我们将与语言本身发生冲突,例如构造
另外,您需要指定一个默认值,
lateinit
对于
@JvmField

是不可能的,正如Shadov在他们的回答中所说,lateinit对于@JvmField注释是不可能的。在这种情况下,我建议用Java编写此文件。