Kaz*_*ita 3 java dependency-injection lazy-loading guice
在官方文档中,我阅读了一篇关于延迟加载提供程序的文章.但是,我无法理解为什么下面的代码意味着创建提供程序的延迟,因为我找不到任何注释或任何与延迟加载相对应的代码.代码就是这段代码.
public class DatabaseTransactionLog implements TransactionLog {
private final Provider<Connection> connectionProvider;
@Inject
public DatabaseTransactionLog(Provider<Connection> connectionProvider) {
this.connectionProvider = connectionProvider;
}
public void logChargeResult(ChargeResult result) {
/* only write failed charges to the database */
if (!result.wasSuccessful()) {
Connection connection = connectionProvider.get();
}
}
Run Code Online (Sandbox Code Playgroud)
我们在世界上哪里可以看到导致加载延迟的特殊点?
创建连接可能很昂贵,并且可能不需要它.因此,guice框架不是在注入时创建连接,而是允许注入"提供者",这将在get()调用方法时创建依赖关系.
延迟是您调用的方式provider.get(),并且相对于为每个依赖项调用构造函数的时间延迟.在您拥有的示例中,DatabaseTransactionLog将调用构造函数,但此时不会创建任何连接.Connection只有在logChargeResult调用方法时才会创建A (因为provider.get()调用了它).
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |