【发布时间】:2020-11-08 20:03:44
【问题描述】:
我有一组验证器类,它们都扩展了一个通用抽象类,都具有相同的构造函数
public abstract class AbstractValidator {
public AbstractValidator(DataSource dataSource) {
// ...
}
}
public class Validator1 extends AbstractValidator {
public Validator1(DataSource dataSource) {
super(dataSource);
}
}
public class Validator2 extends AbstractValidator {
public Validator2(DataSource dataSource) {
super(dataSource);
}
}
我希望 Guice 能够
- 知道如何构造所有这些验证器,将相同的 DataSource 注入到所有这些验证器中
- 使用MultiBinder 将所有验证器注入到一个类中
通过一些谷歌搜索,看起来我可以使用AssistedInject,但问题是,如果我想这样做,我必须为每个验证器创建一个工厂,这是大量的样板。因为它们都有相同的构造函数,我觉得必须有更好的方法。我的DataSource 对象是在Guice 之外创建的,我只想将它绑定到我的configure 中DataSource.class 的所有实例。
我愿意改变的一件事是拥有某种工厂方法,它允许我从 DataSource 创建一个验证器...我认识到我使用构造函数的愿望可能不是类型安全的。
This answer 看起来和我想要的差不多,但它是在 Scala 中的,我不太熟悉,无法完全理解。
【问题讨论】: