La especificación OSGi Blueprint Container define una infraestructura de inyección de dependencias para OSGi derivado del proyecto Spring Dynamic Modules. La especificación define un modelo de componentes para OSGi basado en la infraestructura Spring básica en la que se aumenta un paquete OSGi mediante un proyecto de módulo de XML. Un proyecto de módulo es un archivo de configuración que describe cómo los componentes de granularidad fina están conectados entre sí dentro del paquete. Para obtener información sobre la especificación OSGi Blueprint Container, consulte la especificación Compendium en el sitio web de OSGi Alliance.
Los componentes de módulo son gestionados por un contenedor de contexto de módulo, que es un equivalente directo del contenedor de contexto de la aplicación Spring que inyecta dependencias configuradas en los componentes y gestiona su ciclo de vida. El formato del proyecto de módulo se basa en el archivo de configuración de la aplicación Spring. La evolución significativa desde la infraestructura Spring es la unidad de despliegue, que se conoce como paquete OSGi, y la integración con el registro de servicios OSGi mediante el proyecto de módulo. Los servicios OSGi que se exponen a los clientes del paquete y los servicios OSGi que consume el paquete se declaran en el proyecto de módulo y se registran en el registro de servicios OSGi, o se recuperan de él, mediante el contenedor de contexto del módulo de ejecución.
En una aplicación Blueprint, un componente de módulo es un componente Java™ en el que el ciclo de vida se gestiona mediante un contenedor de contexto de módulo. La configuración del componente del módulo incluye referencias a recursos y componentes de los que depende. El contenedor de contexto del módulo inyecta la configuración en el componente del módulo. El inyectar la configuración en el componente, en lugar de que el componente dependa de fábricas y servicios externos, hace que sea más fácil probar el componente aislado.
Un contenedor de contexto de módulo es un conjunto de componentes gestionados que se ensamblan para formar un paquete OSGi. El contexto de módulo es el encargado de gestionar el ciclo de vida del componente gestionado que está contenido en él y de inyectar configuraciones de componentes.
La configuración declarativa del proyecto de módulo también puede especificar que determinados componentes gestionados del paquete se deben exportar como servicios en el registro de servicios OSGi. Además, es posible declarar que el componente gestionado de un paquete dependa de un servicio o conjunto de servicios que se obtienen mediante el registro de servicios, y que esos servicios se inyecten en el componente gestionado.
En conjunto, la especificación OSGi Blueprint Container describe una arquitectura de aplicación en la que se implementan módulos de aplicación como paquetes OSGi con un proyecto de módulo (la información de configuración) y un contexto de ejecución que se crea a partir de ese proyecto. Los módulos son entidades del mismo nivel, que interactúan mediante el registro de servicios.