Mehrfachverwendung von Komponenten

Eine Komponente, die neben ihrer (unveränderlichen) Konfiguration keinen weiteren dynamischen Zustand besitzt kann innerhalb einer Komponentenstruktur dann mehrfach verwendet werden, wenn ihre Konfiguration identisch ist. Beispiele hierfür sind konfigurierbare Control-Provider, Renderer, Resource-Provider, Label-Provider.

Im Normalfall erzeugt der InstantiationContext für eine gegebene Konfiguration in getInstance(ConfigurationItem) immer eine neue konfigurierte Komponente. Ist die Komponentenimplementierung allerdings als @SharedInstance annotiert, werden pro Instanziierungslauf dann dieselben Komponentenimplementierungen geliefert, wenn ihre Konfiguration übereinstimmt.

Die @SharedInstance Annotation wird an der konkreten Komponentenimplementierungsklasse vorgenommen. Die Annotation wird nicht vererbt, so dass jede Unterklasse einer "shared" Komponente die Annotation wiederholen muss, wenn sie keinen dynamischen Zustand zu ihrer Implementierung hinzufügt.