Kotlin Spring启动@Value注释过程

时间:2019-03-05 08:31:09

标签: spring-boot kotlin

@Value("\${datasource.host}")
private val host: String = ""

我在KOTLIN中编写了以下代码,效果很好。

我不明白如何将host注入到host中。 据我所知,不应该注入该值,因为host变量为val。

此代码如何工作?

1 个答案:

答案 0 :(得分:0)

简短的回答:春天是神奇的!

对于Kotlin属性,val不一定表示该属性是常量。 (此处与Java final并不完全等效。)这仅表示存在一种get()方法,但没有set()方法。

这为值更改其他方式留下了可能性。 (例如,该属性可以具有返回不同值的自定义getter。)

我不确定Spring如何发挥其魔力;它可以直接设置属性的后备字段,也可以创建一个可以隐藏的子类。无论如何,它完全能够设置val属性。 (您也可以在Hibernate中看到它。)