Groovy Spring DSL:使用其他bean的属性构造bean

时间:2012-07-19 23:33:02

标签: spring grails

我有一堆Spring bean,其中一些需要从其他bean初始化,其中一些需要从其他bean的属性初始化。 E.g:

Foo {
}

Bar {
    String getBaz()
}

Qux {
    Qux(Foo foo, String baz)
}

我以为我可以写点像

beans = {
    foo(Foo) {}
    bar(Bar) {}
    qux(Qux, ref('foo'), ref('bar').baz) {}
}

但显然这不起作用,因为ref('bar')不是吧,它是RuntimeBeanReference

在简单的Spring(3+)中,我想要的spring expressions显然是可能的,但我无法用Grails Spring DSL找出必要的语法。可以吗?

1 个答案:

答案 0 :(得分:4)

我认为你的课程看起来像这样:

class Foo {
}

class Bar {
   String baz
}

class Qux {
   Foo foo
   String baz

   Qux(Foo f, String b) {
      foo = f
      baz = b
   }
}

,第二个ref('foo')应为ref('bar')。然后这将工作:

beans = {
   foo(Foo)
   bar(Bar) {
      baz = 'wazzup'
   }
   qux(Qux, ref('foo'), '#{bar.baz}')
}