我OSGi
过去一周一直在学习,但唯一的原因似乎不适合我为什么需要注册并使用任何bundle
我只需导入其JAR
文件的方法.这样做我有什么好处?是的,我确实得到了依赖管理但是:
我可以JAR
通过导入未注册的任何其他文件services
吗?如果是,我为什么要承担使用OSGi的开销?
OSGi的整个想法是,您可以获得模块化:关注点和功能的明确分离,以及在需要时使用不同版本或实现替换或更新功能的选项.
通过导入jar,您可以实例化在另一个jar中声明的类,但是您不能用另一个实现或版本替换它(运行时!).OSGi服务的想法是您定义Java接口并通过在OSGi服务注册表中查找其实现来从客户端使用此接口,而客户端实际上不知道接口的实现.这使得可以在运行时用另一个版本或甚至完全不同的解决方案替换实现而几乎不关心客户端.通过从另一个jar实例化一个类,这是不可能的.
当然,如果你不需要它,你可能会认为OSGi只是很多开销.你可能是对的,这取决于你的情况.我发现遵循OSGi的结构可以让您更好地了解组件与应用程序整体架构之间的关系.维护方面的好处很大.