我有一组验证器类,它们都扩展了一个公共抽象类,它们都具有相同的构造函数
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的能力
通过一些谷歌搜索,看起来我可以使用AssistedInject
,但问题是如果我想这样做,我必须为每个验证器创建一个工厂,这是一个巨大的样板。因为他们都有相同的构造函数,我觉得一定有更好的方法。我的DataSource
对象是在Guice之外创建的,我只想将它绑定到DataSource的所有实例。class
在我的配置
中。
我愿意改变的一件事是有一种工厂方法,它允许我仅从DataSource
创建验证器……我意识到我使用构造函数的愿望可能不是类型安全的。
这个答案看起来几乎是我想要的,但它是在Scala中,我对它不够熟悉,无法完全理解。
不需要辅助注射。
您可以像这样绑定< code>DataSource的实例:
DataSource dataSource = ...;
Injector injector = Guice.createInjector(new AbstractModule() {
@Provides @Singleton DataSource provideDataSource() { return dataSource; }
@ProvidesIntoSet Validator provideValidator1(DataSource dataSource) { return new Validator1(dataSource); }
@ProvidesIntoSet Validator provideValidator2(DataSource dataSource) { return new Validator2(dataSource); }
});
Set<Validator> validators = injector.get(new Key<Set<Validator>>(){});
我有一个关于在Guice中绑定的问题。 Guice不会知道我想要IMYInterface的哪个实现。我是否可以在这个阶段指定注释来有选择地说:我想要MyClass2的实现? 多谢
我有一组15-20个类,它们依赖于一个用绑定类型参数实现泛型接口的类。界面如下所示: 处理程序的单个实现使用反射来处理Foo的所有特殊情况,因为它们都“相似但不同”。 我希望能够在其协作者中以类型安全的方式使用此类,例如: 其中,条形图和Baz都扩展到Foo。不幸的是,Guice抱怨处理程序 我还尝试了以下操作,这会导致编译器错误,因为ConcreteHandler不是Handler的子类 我有这
我有Java接口类。 我有另一个spec builder方法: 以上规范可用于创建客户端: 可用于调用下游客户端获取数据: 我创建了以下客户端规范静态映射:“ContentType”->DownstreamClientSpec 现在我有了一个处理程序方法: 除了contentType的switch语句和特定的客户端创建逻辑之外,我如何基于contentType获得客户端?使用Guice动态绑定特定
对不起,如果这是一个微不足道的问题,我是新的指南。假设我有下面这个类: 然后在其他地方我想做: 我希望有两个“MyClass”实例,一个名为“foo ”,一个名为“bar ”(也就是说,它们中的每一个都有一个不同的依赖实例)。我如何将这两个实例添加到我的注入器中,如何用“injector.getInstance”检索它们中的每一个? 我不想为每个可能的依赖项创建一个“MyClass”的子类。 谢谢
问题内容: 现在,我需要使用以下结构来将多个参数绑定到mysqli查询中: 我使用以下代码计算出问号的数量,并将其插入查询中: 我的问题是,肯定有一种方法可以动态处理查询中尽可能多的输入。硬编码似乎是处理此问题的一种非常糟糕的方法。 我正在使用PHP版本5.4.10 问题答案: 不幸的是,默认情况下,bind_param()不接受数组而不是单独的变量。但是,自PHP 5.6起,将进行重大改进。 要
我有一个预览页面,需要添加或编辑模型,并显示预览。 我需要从添加表单页和编辑表单页调用预览。我要通过的模型是相同的,但来自不同的形式。 (1) ModelAttribute是否有支持这种多属性名称映射的方法?(2) 我怎么能考虑重新设计这个?考虑(a)在表单提交之前重命名表单名称/属性以使用相同的属性名称。(b) 完全删除ModelAttribute——这不是我的选项,因为我使用的是SpringM