OSGi:何时使用组件框架,何时自己创建对象
我已经做了将近一年的AEM开发者了。我知道AEM使用“声明性服务组件框架”来管理OSGi组件的生命周期 考虑一个场景,当我从一个包中导出一个包并从另一个包中导入该包时,我可以在第二个包中的第一个包中创建类的对象。在这种情况下,这是一份进出口合同。OSGi:何时使用组件框架,何时自己创建对象,osgi,declarative-services,Osgi,Declarative Services,我已经做了将近一年的AEM开发者了。我知道AEM使用“声明性服务组件框架”来管理OSGi组件的生命周期 考虑一个场景,当我从一个包中导出一个包并从另一个包中导入该包时,我可以在第二个包中的第一个包中创建类的对象。在这种情况下,这是一份进出口合同。 我的问题是什么时候我应该使用组件框架来管理我的对象的生命周期,什么时候我应该自己处理它,在需要时创建它们。如果您的对象是服务,那么毫无疑问,它们必须是OSGi组件 对于其他方面,我的第一选择是OSGi组件,除非它们是像数据保持器或类似的琐碎对象 如果一
我的问题是什么时候我应该使用组件框架来管理我的对象的生命周期,什么时候我应该自己处理它,在需要时创建它们。如果您的对象是服务,那么毫无疑问,它们必须是OSGi组件 对于其他方面,我的第一选择是OSGi组件,除非它们是像数据保持器或类似的琐碎对象 如果一个对象需要配置或引用OSGi服务,那么它显然也是一个OSGi组件
通常,IMO最好考虑服务,并将包导出定义为允许其他包使用包的服务的最小值。除非捆绑包显然是一个可重用的库,比如commons io(举个简单的例子)。如果对象是服务,那么毫无疑问,它们必须是OSGi组件 对于其他方面,我的第一选择是OSGi组件,除非它们是像数据保持器或类似的琐碎对象 如果一个对象需要配置或引用OSGi服务,那么它显然也是一个OSGi组件
通常,IMO最好考虑服务,并将包导出定义为允许其他包使用包的服务的最小值。除非捆绑包显然是一个可重用的库,比如commons io(举个简单的例子)。在理想的设计中,您实际上无法从导出的包创建对象;因为该包将只包含接口。这使其成为“纯”合同(API)导出。如果其中有可以直接实例化的类,那么它们就是实现类 一般来说,只导出纯API并隐藏实现类要好得多。主要原因有两个:
在理想的设计中,实际上不能从导出的包中创建对象;因为该包将只包含接口。这使其成为“纯”合同(API)导出。如果其中有可以直接实例化的类,那么它们就是实现类 一般来说,只导出纯API并隐藏实现类要好得多。主要原因有两个: