在 Kotlin 中使用对象内部的属性初始化组件
Posted
技术标签:
【中文标题】在 Kotlin 中使用对象内部的属性初始化组件【英文标题】:Intiliaze a component with properties inside an object in Kotlin 【发布时间】:2021-11-01 09:31:40 【问题描述】:我有一个用于存储属性的数据类
@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)
//.....
【问题讨论】:
【参考方案1】:您应该使用@Component
注解将MdsCacheValidationUtil
转换为Spring Managed 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”。
【讨论】:
不客气!如果它解决了您的问题,您可以接受它作为您问题的答案,以便遇到此问题的其他人了解解决方案可能是什么;)以上是关于在 Kotlin 中使用对象内部的属性初始化组件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Kotlin 在 android 中声明 UI 组件的最佳方法是啥?