我有一堆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找出必要的语法。可以吗?
答案 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}')
}