Benannte Subkomponenten
public class A {
public interface Config extends PolymorphicConfiguration<A> {
B.Config getBConfig();
}
B b;
public A(InstantiationContext context, A.Config config) {
this.b = (B) context.getInstance(config.getBConfig());
}
}
public class B {
public interface Config extends PolymorphicConfiguration<B> {
...
}
public B(InstantiationContext context, B.Config config) {
...
}
}
In obigem Beispiel enthält die Konfiguration der Komponente A eine Referenz auf eine Konfiguration für eine Komponente B (B.Config). Die Komponente A selbst benötigt für ihre Instanziierung aber eine Referenz auf eine Subcomponente B. Die Auflösung von "Konfiguration von B" (B.Config) zu einer Referenz auf die konfigurierte Subkomponente B erfolgt über den Instanziierungskontext InstantiationContext. Der Instanziierungskontext entscheidet darüber, ob eine neue Instanz von B angelegt werden muss, oder ob eine bereits erzeugte Instanz von B mit derselben Konfiguration bereits existiert und wiederverwendet werden kann (siehe Mehrfachverwendung von Komponenten).