在osgi系统中,服务是不能孤立存在的,每个服务都从属并运行在提供服务的bundle上。bundle要提供服务供其他模块使用,首先要把服务注册到一个由OSGI框架提供、被所有bundle共享的服务注册表(service registry)中,其他bundle使用服务时只需从注册表中查找所需的服务而不与提供服务的bundle直接交互,因此不需要关注该服务来源于哪个bundle,更不需要导入提供服务的bundle或者它发布的package;
面向服务的组件模型(Service-Oriented Component Model)的设计思想是OSGI的核心设计思想,OSGI推崇采用bundle的方式来划分,Bundle由多个Component(组建)来实现,Component通过对外提供服务接口和引用其他Bundle的服务接口来实现Component间的交互
在OSGI中Component以POJO的方式编写,通过DI的方式注入其所引用的服务,以一个标准格式的XML描述Component引用服务的方式、对外提供的服务以及服务的属性