Grails 1.1 运行时Spring与Beans DSL - 运行时创建 bean的引用

有时只有在运行是才知道需要创建的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的引用.