在 Kotlin 中初始化具有对象内部属性的组件
Intiliaze a component with properties inside an object in Kotlin
我有一个数据class用于存储属性
@Component
@ConfigurationProperties(prefix = "cache")
data class CacheProperties(
var enable: Boolean = false,
var CacheName: String = "",
)
我有一个对象需要使用这些属性。 Kotlin object
不支持@Autowired 注解。在这种情况下如何初始化属性?
object MdsCacheValidationUtil {
//need to inject cache properties here
private val log: Logger = LoggerFactory.getLogger(this::class.java)
fun validateLastUpdateTime(lastUpdateTime: Instant?) {
println(cache.CacheName)
//.....
}
}
您应该使用 @Component
注释将 MdsCacheValidationUtil
变成 Spring 托管 Bean,如下所示:
@Component
class MdsCacheValidationUtil(cacheProperties: CacheProperties) {
private val log: Logger = LoggerFactory.getLogger(this::class.java)
fun validateLastUpdateTime(lastUpdateTime: Instant?) {
println(cacheProperties.CacheName)
//.....
}
}
此外,我认为您在 CacheProperties
中有错别字。我猜你想写 cacheName
而不是 CacheName
。注意小写的“c”。
我有一个数据class用于存储属性
@Component
@ConfigurationProperties(prefix = "cache")
data class CacheProperties(
var enable: Boolean = false,
var CacheName: String = "",
)
我有一个对象需要使用这些属性。 Kotlin object
不支持@Autowired 注解。在这种情况下如何初始化属性?
object MdsCacheValidationUtil {
//need to inject cache properties here
private val log: Logger = LoggerFactory.getLogger(this::class.java)
fun validateLastUpdateTime(lastUpdateTime: Instant?) {
println(cache.CacheName)
//.....
}
}
您应该使用 @Component
注释将 MdsCacheValidationUtil
变成 Spring 托管 Bean,如下所示:
@Component
class MdsCacheValidationUtil(cacheProperties: CacheProperties) {
private val log: Logger = LoggerFactory.getLogger(this::class.java)
fun validateLastUpdateTime(lastUpdateTime: Instant?) {
println(cacheProperties.CacheName)
//.....
}
}
此外,我认为您在 CacheProperties
中有错别字。我猜你想写 cacheName
而不是 CacheName
。注意小写的“c”。