2

たくさんのSpringBeanがあり、そのうちのいくつかは他の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で必要なことは明らかに可能ですが、GrailsS​​pringDSLでは必要な構文を理解できません。できますか?

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
   }
}

そして2番目はだったref('foo')はずref('bar')です。次に、これは機能します:

beans = {
   foo(Foo)
   bar(Bar) {
      baz = 'wazzup'
   }
   qux(Qux, ref('foo'), '#{bar.baz}')
}
于 2012-07-20T00:34:34.640 に答える