はの文「All Rocks have Minerals.
」にしてみましょう:それらのそれぞれが異なるMineral
インスタンスで構成され、我々は2つのRock
インスタンスをしたい場合はGuiceの:インスタンスを要求し、ないタイプ
public class Mineral
{
// Nevermind why a Mineral would have a GUID.
// This is just to show that each Mineral instance
// is universally-unique.
String guid;
@Inject
public Mineral(String id)
{
guid = id;
}
}
public class Rock
{
private Mineral mineral;
@Inject
public Rock(Mineral min)
{
mineral = min;
}
}
を(自分自身のGUIDを持つ各):
私たちはRock
用のGuiceを頼むとき
public class RockModule extends AbstractModule
{
public void configure(Binder binder)
{
// Make two Minerals with different GUIDs.
Mineral M1 = new Mineral(UUID.getRandomId().toString());
Mineral M2 = new Mineral(UUID.getRandomId().toString());
// Configure two Rocks with these unique Minerals
Rock R1 = new Rock(M1);
Rock R2 = new Rock(M2);
// Define bindings
bind(Rock.class).toInstance(R1);
// No way for Guice to expose R2 to the outside world!
}
}
はだから今、それは常に私たち自身がのM1
インスタンスで構成されR1
インスタンスを与えます。
Spring DIでは、2つのBeanを同じタイプに定義できますが、異なるBean IDを与えるだけです。次に、IDを使ってBeanを一緒に「配線」します。だから私はR1
とM1
と一緒にR1
とM2
などを配線することができました。そして、私はそれらを必要とするので、春にR1
またはR2
を頼むことができます。 Guiceので
、あなただけのあなたが欲しいタイプ(Rock.class
)、ないインスタンスを求めることができます。
どのようにGuiceでさまざまな「有線豆」をリクエストしますか?異なるAbstractModule
のコンクリートを使用することによって?それともGuiceの限界ですか?
@herpylderp:まあ、それはあなたが「正確に」意味することに依存しますが、基本的には「はい」です。 –