我正尝试使用@Value注解在我的spring-component类中注入一个map属性。
我的课是这样的
@Service
class SomeService {
@Value("#{\${some.map.property}}")
lateinit var map: Map<String, Boolean>
}
如果我的application.properties是-
some.map.property={a:true}
注入工作正常。但如果值为空,例如
some.map.property={}
应用程序抛出错误lateinit property map has not been initialised
。如果属性值为{}
,在spring中是否有方法将Map初始化为空Map?我有一个条件,即该属性将始终存在,并且只有属性值可以更改。我使用的是spring Boot version -〉2.7.1,应用程序是使用Kotlin构建的。
如果属性设置为{},则会出现属性未初始化错误。如果值存在,则会正常工作。如果始终必须保留属性,并且只能更改值。如果值为{},是否有方法使用空Map初始化属性。我始终可以将属性读取为字符串,然后转换为Map。但我希望避免这种情况。
谢谢你!
1条答案
按热度按时间jmo0nnb31#
因此,代码的问题在于,无论何时传递:
您将收到:
因为
{}
被Map为null,但是您希望有Map<String, Boolean>
,这就是出现问题的原因。解决方法很简单,如果出现null,可以使用默认值:
在这种情况下,对于属性中的
{}
值,它将Map到空Map。