Google水果对象的生命周期

shpuktzy

使用Google水果创建的对象的寿命是多少?我们有一个系统仅使用一个带有几十个绑定的大型组件。据我所知,某些绑定在被请求时会生成多个实例,而另一些则是“单子”(即,仅创建一个实例并将其传递给多个请求对象)。大多数绑定都很简单,即:

.bind<Interface1, Impl1>

虽然我们也有一些工厂:

 .registerFactory<unique_ptr<Interface2>(fruit::Assisted<const string&>)>(
    [](const string& arg) { return Impl2::Create(arg); })

水果将在什么情况下创建一个新实例,并且在什么情况下将重用现有实例?

该知识对于决定如何绑定某些服务非常重要,因为我们要确保某些绑定在应用程序中是“单数” /“单数”,而有些则是在每次请求时创建的。

额外的问题:如果我们提取一些与子组件的绑定,假设我们将所有子组件.install()都放入主组件中,那么这将如何影响对象的寿命?

更新:所以我们现在知道范围应该由注入器维护。我最终使用了一个不同的解决方案,如下所示:我将大型组件拆分为几个较小的组件,每个组件都是通过单独的方法创建的。这使组件构建代码看起来更像Fruit网站中的示例。然后,对于需要单例值的组件,我将一个静态成员放入方法中并使用bindInstance,例如:

fruit::Component<SingletonInterface> CreateSingletonComponent()
{
    static MySingleton instance;
    return fruit::createComponent().bindInstance((SingletonInterface&)instance);
}
鲁道夫

据我所知,Google Fruit不会实现对象范围/生命周期,例如Singleton,RequestScoped,SessionScoped,ThreadScoped。

从Google Fruit Wiki(https://github.com/google/fruit/wiki):

注入范围,例如仅在请求期间绑定类型/值。实施此功能,然后将其删除,而使用NormalizedComponent代替。如果您需要创建许多具有大多数绑定的注入器,NormalizedComponent可以节省注入器创建过程中涉及的大部分工作(但仍然会有单独的注入器)。有关将NormalizedComponent与每个请求注入器一起使用的示例,请参见教程中的服务器页面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对象的生命周期

来自分类Dev

MEF对象生命周期

来自分类Dev

执行异步任务的对象的生命周期

来自分类Dev

Nib / Xib对象生命周期

来自分类Dev

Google Glass Activity生命周期调用

来自分类Dev

MarshalByRefObject生命周期

来自分类Dev

组件生命周期

来自分类Dev

ComponentDidMount()生命周期

来自分类Dev

RequestLocationUpdates生命周期

来自分类Dev

ViewPager的生命周期

来自分类Dev

订阅的生命周期

来自分类Dev

什么是“对象生命周期管理”中的“活动对象”?

来自分类Dev

列表初始化期间临时对象的生命周期

来自分类Dev

在任务的生命周期内始终引用对象

来自分类Dev

Java和内存管理中的对象生命周期?

来自分类Dev

如何使用JPA和实体对象生命周期

来自分类Dev

对象生命周期管理Firebase存储

来自分类Dev

了解Rails对象生命周期问题

来自分类Dev

将对象的生命周期绑定到其源

来自分类Dev

如何延长活动对象的生命周期

来自分类Dev

对象生命周期管理Firebase存储

来自分类Dev

了解对象的构造、生命周期和销毁

来自分类Dev

AngularJS 中控制器对象的生命周期

来自分类Dev

ServiceStack:IMessageService 中依赖注入对象的生命周期

来自分类Dev

临时 shared_ptr 对象的生命周期

来自分类Dev

从 `if constexpr` 分支扩展对象生命周期/范围

来自分类Dev

Google MapView添加超出正常生命周期

来自分类Dev

Android Google Play服务生命周期

来自分类Dev

Android Fragment生命周期和Google Maps