【发布时间】:2015-04-20 20:04:48
【问题描述】:
由于我们忘记处理的构造实例,我目前在 iPojo 泄漏方面遇到了很多麻烦。我认为这是使用 ipojo 工厂技术使用命令式实例化的一个不可避免的缺点:基本上,您可以通过调用 factory.createComponentInstance(config) 来说明何时需要您的服务,因此您有责任说何时完成。这迫使我保留两个引用,一个是我想要使用的服务,还有一个是 iPojo ComponentInstance,这样当消费者完成后,它可以调用 componentInstance.dispose()。如果没有,有泄漏
在消费者不需要处理 iPojo 服务及其实例的生命周期的情况下,是否有一种更具声明性的方式来做到这一点?
为了简化我的用例,假设有一个带有按钮的 UI,每次按下按钮时,我都需要一个新的、唯一的 iPojo 服务实例。理想情况下,当实例超出范围时,该实例将被 GC 处理,而消费者无需执行任何操作
也许我的错误是使用服务作为实例,但我有三个理由使用服务而不是普通类并调用new。
- 服务实现应该是可替代的
- 消费者应该依赖于一个接口,而不是一个实现/提供者,这不仅是因为 #1,而且还因为在依赖具体实现时会拉取更多的传递依赖
- 服务 impl 本身有一些依赖项,我希望这些依赖项会被 iPojo 注入(依赖注入)。
作为第二个请求,是否有人知道任何使用 iPojo 的开源、真实(即非虚拟、演示)项目,我可以将其用作 iPojo 的良好使用示例?
【问题讨论】: