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.