0

Google Guice 的最佳实践是仅注入直接依赖项。但是,如果我使用以下示例代码,如何在Customer类中创建帐户实例?

@Provides 
Account providePurchasingAccount(Customer customer) { 
  return customer.getPurchasingAccount();
}

问题是,Guice 总是尝试通过调用providePurchasingAccount()来获取新帐户,这会导致循环引用。

4

1 回答 1

2

您摘录的方法在CustomersModule 类中,而不是Customer。

这里有更多细节。

这取决于如何绑定客户。

在您提到的 Guice wiki 页面中,它没有显示客户的绑定。

想象一下这个模块也有这个方法。

@Provides
Customer getCustomer(Database database, long customerId) {
  return database.getCustomer(customerId);
}

在这种情况下,首先注入 Account 时,会调用此方法来获取 Customer 对象,然后调用 providePurchasingAccount 来获取 Account。

于 2011-09-19T23:28:18.793 回答