如何使用Spring 5和Kotlin访问Bean Definition DSL的beans元素中的Environment属性

时间:2018-01-23 21:31:23

标签: spring spring-boot kotlin spring-dsl

我想根据Spring Boot应用程序的application.yml文件中的某些属性的值来定义一些bean。例如,使用number-of-beans: 5我构建一个for循环来创建5个bean实例:

application.yml

number-of-beans: 5

BeanDsl.kt

fun beans() = beans {
    val n = env.getProperty("number-of-beans")
    for (i in 1..n) {
        bean<String>("string${i}") { "string${i}" }
    } 
}

问题是如何在那时访问环境,因为那里的env变量不可用。它很有趣,它位于bean{}元素内。

1 个答案:

答案 0 :(得分:0)

使用Spring Framework 5.0是不可能的,但我刚刚通过this commit添加了这样的支持,从Spring Framework 5.1 / Spring Boot 2.1开始就可以使用这种改进。