从Spring-OSGi0.7规范中可以看出,Spring的目的并不是要提供一个OSGi规范的实现。也就是说,Spring与Equinox等实现是互补的,而不是竞争的。这种互补性可以简单的理解为:OSGi实现负责协调模块与模块之间的调用、依赖关系;而在一个模块内部,则由Spring来进行更细粒度的管理。为此,为方便使用,Spring将在配置文件中增加直接支持OSGi的配置项。
但是,由于Spring与OSGi都是提高应用系统可扩展性的一种框架,因此,不可避免的,Spring与OSGi也一定会与OSGi有所重合。这种重合主要体现在Spring的依赖注入与OSGi的DS。按照Spring的规范所说,Spring-OSGi希望为应用开发者提供一个统一的、一致的开发环境,无论是在OSGi之内还是之外。也就是说,Spring即使是在模块之间,希望能够用自己的机制来代替DS。
如果真的是这样,那么,按我的理解,Spring支持OSGi,主要也就是利用OSGi规范所倡导的模块动态装载的运行机制了。当然,支持OSGi之后,能够与其它的基于OSGi实现的应用程序进行集成与被集成也是一个很好的点。