有时只有在运行是才知道需要创建的bean的名字. 在这种情况情况下你可以使用字符串替换来实现动态调用:def beanName = "example"
bb.beans {
"${beanName}Bean"(MyExampleBean) {
someProperty = [1,2,3]
}
}
在这个例子中,使用早先定义的 beanName 变量来调用bean.
另外, 可使用ref来动态引用在运行时才知道的bean的名字,如下面的代码:def beanName = "example"
bb.beans {
"${beanName}Bean"(MyExampleBean) {
someProperty = [1,2,3]
}
anotherBean(AnotherBean) {
example = ref("${beanName}Bean")
}
}
这里AnotherBean属性通过运行时对 exampleBean的引用来设置 .
也可以通过 ref 来引用在父 ApplicationContext定义的bean, ApplicationContext 在 BeanBuilder的构建器中提供:ApplicationContext parent = ...//
der bb = new BeanBuilder(parent)
bb.beans {
anotherBean(AnotherBean) {
example = ref("${beanName}Bean", true)
}
}
这里第二个参数 true 指定了在父ApplicationContext中查找bean的引用.