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

提前致谢!

最佳答案

Provider 是关于:

  • 延迟实例化(但实例化是瞬时的,同步的);仅供引用,Dagger 为这个用例引入了 Lazy 类型。
  • 对象工厂:除非对象有范围,否则每次调用 get() 都会给你一个新对象
  • 在长期作用域中使用生命周期较短的作用域对象:如果您需要从单例作用域(或 session 作用域)对象访问请求作用域对象,则必须使用 Provider ,否则您将被注入(inject)一个对象来自当前请求范围,它将无法用于下一个请求。 GIN 仅支持 Singleton 范围操作系统,它在这里并不真正适用,因为它只是上述工厂用例的变体;但在服务器端(使用 Guice、Spring DI、Dagger 等),servlet 或 RequestFactory 服务/定位器是单例(或 RF 的伪单例),这是 DI 框架的关键部分。
  • AsyncProvider 相同,除了 它是异步的,包装了对 GWT.runAsync() 的调用。

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

    关于GWT:提供者与异步提供者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15631056/

    10-11 04:51