尝试将环境变量值分配给lateinit
变量时遇到错误。
错误是“原始类型的属性上不允许使用'lateinit'修饰符” 。
我的application.properties(读取环境变量)
my.property.from.properties.file=true
MyService类:
@Component
class MyService @Autowired constructor(
private val someService: SomeService) {
@Value("\${my.property.from.properties.file}")
private lateinit var myBooleanEnabled: Boolean
为其分配值不能解决问题。例如,使用
private lateinit var myBooleanEnabled: Boolean = true
我遇到2个错误:
对于我所读的内容,我需要一个委托(https://kotlinlang.org/docs/reference/delegated-properties.html),但我无法完全掌握。另外,如果有“更清洁”的解决方案,我也不必编写其他方法来设置属性。 有什么想法吗?
答案 0 :(得分:0)
最简单的方法是将myBooleanEnabled
定义为可空值并删除lateinit
private var myBooleanEnabled: Boolean? = null
在这种情况下,它不会被解释为字节码中的原始boolean
。
但是,在您的情况下,我建议您进行构造函数注入。
答案 1 :(得分:0)
您可以使用构造函数注入,如下所示。如果您使用的是Spring 4.3+,则不需要@Autowired
批注。 Spring文档对此有一些指导:
@Component
class MyService(
private val someService: SomeService,
@Value("\${my.property.from.properties.file}")
private val myBooleanEnabled: Boolean)