【问题标题】:Kotlin Spring boot @Value annotation processKotlin Spring boot @Value 注解流程
【发布时间】:2019-03-05 08:31:08
【问题描述】:
@Value("\${datasource.host}")
private val host: String = ""

我在 KOTLIN 中编写了以下代码,它运行良好。

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

这段代码是如何工作的?

【问题讨论】:

    标签: spring-boot kotlin


    【解决方案1】:

    简短回答:春天很神奇!

    对于 Kotlin 属性,val 并不一定意味着该属性是常量。 (这里它不完全等同于 Java final。)它只是意味着有一个 get() 方法,但没有 set() 方法。

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

    我不太清楚 Spring 是如何发挥它的魔力的。它可能能够直接设置属性的支持字段,或者它可以创建一个隐藏的子类。无论如何,它完全能够设置val 属性。 (您也可以在 Hibernate 中看到这一点。)

    【讨论】:

    猜你喜欢
    • 2017-01-20
    • 2018-12-18
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多