GWT:Provider vs AsyncProvider

时间:2013-03-26 06:53:00

标签: gwt gin gwtp

GWT中提供程序和AsyncProvider之间的区别是什么。我的理解是两者都用于代码分割和延迟实例化。 所以我无法决定,在哪种情况下我们选择Provider而不是AsyncProvider?

提前致谢!

1 个答案:

答案 0 :(得分:6)

Provider是关于:

  • 延迟实例化(但实例化是瞬时的,同步的);仅供参考,Dagger为此用例引入了Lazy类型。
  • 对象工厂:除非对象是作用域的,否则每次调用get()都会给你一个新对象
  • 在寿命较长的作用域中使用寿命较短的作用域对象:如果需要从单例作用域(或会话作用域)对象访问请求范围的对象,则必须使用Provider,否则你将从当前请求范围注入一个对象,该对象将无法用于下一个请求。 GIN仅支持Singleton范围,它不会真正在此处应用,因为它只是上述工厂用例的变体;但是在服务器端(使用Guice,Spring DI,Dagger等),servlet或RequestFactory服务/定位器是单例(或RF的伪单例),这是DI框架的关键部分。

AsyncProvider相同它是异步的,包含对GWT.runAsync()的调用。

换句话说:只有AsyncProvider才真正与代码分割有关。 Provider会对代码拆分输出产生影响,但与任何工厂(手工编码或GIN的AssistedInject)没有区别。