将服务注册为普通服务与将其作为ServiceFactory之间的区别是什么?
例如 :
我有一个正常的osgi组件,我正在使用服务scr注释进行服务
@Component
@Service
class Service1 implements Service1Interface {
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
现在,我有另一个osgi组件,我将作为服务注册ServiceFactory标志为true
@Component
@Service(serviceFactory=true )
class Service1 implements Service1Interface {
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
这两者究竟有什么区别?它们在容器中注册时是否存在差异?在什么情况下我们应该选择ServiceFactory?
在前者中,将有一个组件实例将用于获取服务的所有bundle.在后一种情况下,将为获取服务的每个包创建组件的新实例.
如果需要在每个使用捆绑包的基础上跟踪资源,则服务工厂非常有用.