Autowiring a non-primitive with spring annotations like

@Autowired
lateinit var metaDataService: MetaDataService

works.

但这不管用:

@Value("\${cacheTimeSeconds}")
lateinit var cacheTimeSeconds: Int

with an error:

lateinit modifier is not allowed for primitive types.

如何将primitve属性自动绑定到Kotlin类中?

推荐答案

还可以在构造函数中使用@Value注释:

class Test(
    @Value("\${my.value}")
    private val myValue: Long
) {
        //...
  }

这样做的好处是您的变量是最终的并且不可为空.我也更喜欢构造函数注入.它可以使测试变得更容易.

Kotlin相关问答推荐

Gradle Jooq配置自定义生成器

KMP:未能添加cafe.adriel.voyager依赖项

数据源配置

kotlin - 挂起简单方法调用链时可能存在冗余分支

kotlin 模式匹配如何像 scala 一样工作

为什么 trySend 会发出假数据?

Kotlin 可空泛型

Kotlin 条件格式字符串

从字符串列表构建字符串

为什么 Kotlin 扩展运算符在传递原始可变参数时需要 toTypedArray()?

Kotlin 方法重载

创建Spring和#180的实例;Kotlin中的参数化类型引用

任何处理器都无法识别以下选项:'[kapt.kotlin.generated, room.incremental]'

这是 Kotlin 中的错误还是我遗漏了什么?

Kotlin中的属性(properties)和参数(parameters)有什么区别?

判断EditText是否为空kotlin android

Android studio 4.0 新更新版本说 Kotlin 与这个新版本不兼容

使用 java lambda 调用 kotlin 函数时,Kotlin 无法访问 kotlin.jvm.functions.Function1

Android Jetpack Compose 中的文本渐变

将协程更新到 1.2.0 后构建失败:META-INF/atomicfu.kotlin_module