首页 > 解决方案 > 数据类中的构造函数注入

问题描述

我正在尝试以下操作:

@Configuration 
@ConfigurationProperties(prefix = "my")
data class MyValueConfig(
    @Value("\${my.value1}") var value1: Int? = null,
    @Value("\${my.value2}") var value2: String? = null,
    @Value("\${my.value3}") var value3: String? = null
)

Spring 不连接值字段,它们为空。因为 Spring 需要一个默认构造函数,我的假设是我可以像这样提供它。因此,可空类型。

这是有效的,因为它基于 setter 注入:

@Configuration 
@ConfigurationProperties(prefix = "my")
class MyValueConfig {
    @Value("\${my.value}") lateinit var value1: Int = 0   
    @Value("\${my.value2}") lateinit var value2: String
    @Value("\${my.value3}") lateinit var value3: String
}

是否可以使用 kotlin 中的构造函数注入data class

标签: springkotlindependency-injection

解决方案


要对数据类进行构造函数注入,请使用构造函数上的@Autowired注释

@Configuration 
@ConfigurationProperties(prefix = "my")
data class MyValueConfig @Autowired constructor(
    @Value("\${my.value1}") var value1: Int? = null,
    @Value("\${my.value2}") var value2: String? = null,
    @Value("\${my.value3}") var value3: String? = null
)

推荐阅读