TL;DR
在做的一個(gè)項(xiàng)目遇到這個(gè)問題覆旭,需要把server.host存在application.properties里面跳夭,但是在取value 的時(shí)候遇到了問題驹饺,總是提示 ”lateinit property *** has not been initialized“侣夷,找遍了簡書和so 都沒有太好的答案祠乃,多方參考以后終于才解決這個(gè)小問題梦重。
這個(gè)問題的存在是因?yàn)樵趕pring 跑到@service class的時(shí)候,我們還沒有取到配置文件里面的value亮瓷, 所以導(dǎo)致了spring 認(rèn)為這個(gè)value variable沒有initialize琴拧。
解決方案就是把你要取的value放到class的constructor里面去,下面提供一個(gè)簡單的example嘱支。
-application.properties
server.host=localhost:9092
-Service.kt
@Service
class Service(@Value("\${server.host}") val host: String) {
private val producer = createProducer(host)
}
Reference:
Kotlin Doc - Constructor
Another code example