如何使用Kotlin Bean DSL为Bean注入@Value配置值
在Kotlin Beans DSL中实现@Value配置注入
要实现和你提供的Java代码等效的Kotlin Beans DSL配置,有两种常用方式:
方法1:直接使用Environment获取配置
在beans DSL的作用域内,可以直接访问environment对象,通过它获取配置属性,这和@Value的底层逻辑一致:
val beans = beans { bean { // getRequiredProperty会在配置不存在时抛出异常,和@Value默认行为一致 val foo = environment.getRequiredProperty("foo") Thing(foo) } }
如果允许配置项为空,可以使用getProperty并指定默认值:
val foo = environment.getProperty("foo") ?: "default-value"
方法2:使用value属性委托
Spring Kotlin DSL提供了value委托,语法更贴近@Value注解的写法:
val beans = beans { bean { val foo: String by value("\${foo}") Thing(foo) } }
也可以用Kotlin原生字符串避免转义$符号:
val foo: String by value("""${foo}""")
这个委托会自动处理配置解析,和@Value注解的效果完全一致。
内容的提问来源于stack exchange,提问作者Christian Bongiorno
相关产品推荐
相关产品推荐

