Google Guice 的最佳实践是仅注入直接依赖项。但是,如果我使用以下示例代码,如何在Customer类中创建帐户实例?
@Provides
Account providePurchasingAccount(Customer customer) {
return customer.getPurchasingAccount();
}
问题是,Guice 总是尝试通过调用providePurchasingAccount()来获取新帐户,这会导致循环引用。
Google Guice 的最佳实践是仅注入直接依赖项。但是,如果我使用以下示例代码,如何在Customer类中创建帐户实例?
@Provides
Account providePurchasingAccount(Customer customer) {
return customer.getPurchasingAccount();
}
问题是,Guice 总是尝试通过调用providePurchasingAccount()来获取新帐户,这会导致循环引用。
您摘录的方法在CustomersModule 类中,而不是Customer。
这里有更多细节。
这取决于如何绑定客户。
在您提到的 Guice wiki 页面中,它没有显示客户的绑定。
想象一下这个模块也有这个方法。
@Provides
Customer getCustomer(Database database, long customerId) {
return database.getCustomer(customerId);
}
在这种情况下,首先注入 Account 时,会调用此方法来获取 Customer 对象,然后调用 providePurchasingAccount 来获取 Account。