OSGi 蓝图容器规范为派生自 Spring 动态模块项目的 OSGi 定义了依赖关系注入框架。该规范根据核心 Spring Framework 为 OSGi 定义了组件模型,该框架是由 XML 模块蓝图扩充 OSGi 捆绑软件的位置。模块蓝图是一个配置文件,用于描述如何将捆绑软件内的细颗粒度组件连接在一起。有关 OSGi 蓝图容器规范的更多信息,请参阅 OSGi Alliance Web 站点上的“简要规范”。
模块组件由模块上下文容器进行管理,该容器是用于将所配置的依赖关系注入组件并管理其生命周期的 Spring 应用程序上下文容器的直接等价物。模块蓝图的格式基于 Spring 应用程序配置文件。 Spring Framework 中的重大改进是部署单元(称为 OSGi 捆绑软件)以及通过模块蓝图与 OSGi 服务注册表的集成。已向捆绑软件的客户机公开的 OSGi 服务以及捆绑软件所耗用的 OSGi 服务将在模块蓝图中进行声明,并由运行时模块上下文容器向 OSGi 服务注册表注册或从该注册表进行检索。
在蓝图应用程序中,模块组件是一个由模块上下文容器在其中管理生命周期的 Java™ 组件。模块组件配置包括对它所依赖的资源及组件的引用。 模块上下文容器会将该配置注入到模块组件中。通过将配置注入到组件中(而不是组件依赖于外部工厂和服务),可使得在隔离环境中测试组件变得更容易。
模块上下文容器是一组已组合到 OSGi 捆绑软件中的受管组件。模块上下文负责管理它所包含的受管组件的生命周期,并负责组件配置的注入。
模块蓝图中的声明式配置还可以指定必须将捆绑软件的某些受管组件作为 OSGi 服务注册表中的服务进行导出。此外,对于要注入到受管组件中的那些服务,可能会声明捆绑软件的受管组件依赖于通过服务注册表获取的某项服务或某组服务。
总之,OSGi 蓝图容器规范描述了一种将应用程序模块在其中实现为带模块蓝图(配置信息)的 OSGi 捆绑软件的应用程序体系结构,以及从该蓝图创建的运行时上下文。模块是对等的,它们通过服务注册表进行交互。