我有两个不同的类(Cart和Payment)尝试使用相同的数据库访问器类DBAccessor,因为DBAccessor只包含以固定格式从DB读取和写入数据的逻辑。
public class Cart{
@Inject
Cart(@Cart DBService db){
}
..
}
public class Payment{
@Inject
Payment(@Payment DBService db){
}
..
}
public class CartDBService implements DBService{
@Inject
public CartDBService(DBAccessor){
}
}
public class PaymentDBService implements DBService{
@Inject
public PaymentDBService(DBAccessor){
}
}
public class DBAccessor{
@Inject
public DBAccessor(String tableName){
}
}
我想在给定设置中使用guice注入依赖项,确保一切都是由guice创建的。
我正在使用绑定注释为Cart和Payment注入不同的DBService实例。
bind(DBService.class).annotatedWith(Cart.class).to(CartDBService.class);
bind(DBService.class).annotatedWith(Payment.class).to(PaymentDBService.class);
如何为购物车和订单注入单独的DBAccessor类,以确保它们注入正确的表名。
答案 0 :(得分:0)
问题在于设计:课程DBAccessor
做了太多工作,因为它从不同的表中读取不同类型的数据,现在Guice通过向您展示您是一个坏男孩来拯救您...
解决方案:实现两个DBAccessor类,如果它们具有通用逻辑,则可以将其提取到接口中的默认方法或抽象类并从中继承。然后,您将要求Guice为构造函数提供不同的类。
答案 1 :(得分:0)
您需要两次绑定DbAccessor
课程,并为每个表格使用不同的qualifier annotation。然后你的每个类都可以注入他们需要的合适的绑定。