Die OSGi Blueprint-Container-Spezifikation definiert ein vom Projekt "Spring Dynamic Modules" abgeleitetes Abhängigkeitsinjektionsframework für OSGi. Die Spezifikation definiert ein Komponentenmodell für OSGi, das auf dem zentralen Spring-Framework basiert, in dem ein OSGi-Bundle über ein XML-Modul-Blueprint erweitert wird. Ein Modul-Blueprint ist eine Konfigurationsdatei, die beschreibt, wie differenziert Komponenten innerhalb des Bundles miteinander verbunden sind. Weitere Informationen zur OSGi-Blueprint-Container-Spezifikation finden Sie unter "Compendium Specification" auf der Website OSGi Alliance.
Modulkomponenten werden von einem Modulkontextcontainer verwaltet, eine direkte Entsprechung des Spring-Anwendungskontextcontainers, der konfigurierte Abhängigkeiten in die Komponenten injiziert und ihren Lebenszyklus verwaltet. Das Format des Modul-Blueprints basiert auf der Spring-Anwendungskonfigurationsdatei. Die bedeutende Weiterentwicklung des Spring-Framework stellt die Implementierungseinheit dar, die als OSGi-Bundle bezeichnet wird, und die Integration mit der OSGi-Service-Registry über den Modul-Blueprint. Die OSGi-Services, die für die Clients der Bundles verfügbar gemacht werden, und die vom Bundle konsumierten OSGi-Services sind im Modul-Blueprint deklariert und werden über den Laufzeitmodulkontextcontainer von der OSGi-Service-Registry registriert oder abgerufen.
In einer Blueprint-Anwendung ist eine Modulkomponente eine Java™-Komponente, in der der Lebenszyklus von einem Modulkontextcontainer verwaltet wird. Die Modulkomponentenkonfiguration enthält Referenzen zu Ressourcen und Komponenten, von denen sie abhängt. Der Modulkontextcontainer injiziert die Konfiguration in die Modulkomponente. Das isolierte Testen der Komponente ist bei einer Komponente, bei der die Konfiguration injiziiert wurde, einfacher als bei einer Komponente, die von externen Factorys und Services abhängig ist.
Ein Modulkontextcontainer ist eine Gruppe von verwalteten Komponenten, die in ein OSGi-Bundle assembliert werden. Der Modulkontext ist verantwortlich für die Verwaltung des Lebenszyklus der verwalteten Komponente, die er enthält, und für die Injektion der Komponentenkonfigurationen.
Die deklarative Konfiguration im Modul-Blueprint kann auch angeben, dass bestimmte verwaltete Komponenten des Bundles als Services in die OSGi-Service-Registry exportiert werden müssen. Es ist außerdem möglich, zu deklarieren, dass die verwaltete Komponente eines Bundles von einem Service oder von Servicepaketen abhängig ist, die über die Service-Registry abgerufen werden und dass diese Services in die verwaltete Komponente injiziert werden.
Die OSGi Blueprint-Container-Spezifikation beschreibt eine Anwendungsarchitektur, in der Anwendungsmodule als OSGi-Bundles mit einem Modul-Blueprint (den Konfigurationsinformationen) und einem Laufzeitkontext, der aus diesem Blueprint erstellt wird, implementiert werden. Module sind Peers, die über die Service-Registry interagieren.