2

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

Foo {
}

Bar {
    String getBaz()
}

Qux {
    Qux(Foo foo, String baz)
}

我以为我可以写类似的东西

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

但显然这不起作用,因为ref('bar')不是 Bar,而是RuntimeBeanReference.

在普通的 Spring (3+) 中,我想要的显然可以使用spring 表达式,但我无法弄清楚 Grails Spring DSL 的必要语法。可以做到吗?

4

1 回答 1

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}')
}
于 2012-07-20T00:34:34.640 回答